Submission #1354345

#TimeUsernameProblemLanguageResultExecution timeMemory
1354345053thousandCoin (NOI24_coin)C++20
0 / 100
1 ms344 KiB
#include<bits/stdc++.h>
using namespace std;
	int a,b,c,d,e,f,siz[100005],ans[100005];
	vector<int>v[2];
//	set<int>s[100005];
	vector<int>w[100005][2];
int main(){
	cin>>a>>b;
	for(int i=0;i<b;i++){
		cin>>c>>d;
		c--;
		d--;
		w[c][0].push_back(d);
		w[d][1].push_back(c);
	}
	for(int i=0;i<a;i++){
		if(w[i][0].size()==0) v[0].push_back(i);
		siz[i]=w[i][0].size();
	}
	bool wo=0;
	while(true){
		if(v[wo].size()==0) break;
		if(v[wo].size()==1){
			ans[v[wo][0]]=1;
			int h=v[wo][0];
			for(int j=0;j<w[h][1].size();j++){
				siz[w[h][1][j]]--;
				if(siz[w[h][1][j]]==0) v[1-wo].push_back(w[h][1][j]);
			}
		}
		else{
			for(int i=0;i<v[wo].size();i++){
				ans[v[wo][i]]=-1;
				int h=v[wo][i];
				for(int j=0;j<w[h][1].size();j++){
					siz[w[h][1][j]]--;
					if(siz[w[h][1][j]]==0) v[1-wo].push_back(w[h][1][j]);
				}
			}
		}
		while(v[wo].size()!=0) v[wo].pop_back();
		wo=1-wo;
	}
	for(int i=0;i<a;i++){
		cout<<ans[i]<<' ';
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...