Submission #1200125

#TimeUsernameProblemLanguageResultExecution timeMemory
1200125hackstar9월 (APIO24_september)C++17
In queue
0 ms0 KiB
#include "september.h"

#include <bits/stdc++.h>

using namespace std;

int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
	vector<vector<int>>g(N);
	for(int i=0;i<F.size();i++){
		if(~F[i]){
			g.emplace_back(F[i]);
		}
	}
	set<int>st;
	vector<int>vis(N,0);
	auto dfs=[&](auto dfs,int u)->void{
		vis[u]=1;
		for(auto v:g[u]){
			if(vis[v]){
				continue;
			}
			st.insert(v);
			dfs(dfs,v);
		}
	};
	int ans=0;
	for(int i=0;i<N-1;i++){
		int cur=S[0][i];
		if(st.count(cur)){
			st.erase(cur);
		}
		else{
			dfs(dfs,cur);
		}
		ans+=(st.empty());
	}
	return ans;
}