0分求助
查看原帖
0分求助
1067988
Raymond2014楼主2025/1/26 20:14
#include <bits/stdc++.h>
#define int long long 
using namespace std;
const int N=1e5+1;
vector<int> v[N];
int in[N],out[N],dis[N],ans[N];
signed main(){
    int n;
    cin>>n;
	for(int i=1;i<n;i++){
		int g,h;
		cin>>g>>h;
		v[g].push_back(h);
		in[h]++;
		out[g]++;
	}
	queue<int> q;
	int tot=0;
	for(int i=1;i<=n;i++)
		if(in[i]==0) tot++,dis[i]=1,q.push(i);
	while(q.size()){
		int u=q.front();
		q.pop();
		if(dis[u]==tot && ans[u]==0) ans[u]=1;
		if(out[u]>1) break;
		for(auto t:v[u]){
			in[t]--;
			dis[t]+=dis[u];
			if(in[t]==0) q.push(t);
		}
	}
	for(int i=1;i<=n;i++) if(ans[i]==1) cout<<ans[i]<<endl;
    return 0;
}
2025/1/26 20:14
加载中...