灌水池塘
2025-02-04 11:49:28
发布于:上海
#include<vector>
#include<stdio.h>
#include<stdlib.h>
int n,vis[1000001],pre=-1,now=-1;std::vector<int>map[1000001];
int f(int now,int pre){
if(vis[now])return vis[now];
vis[now]=1;
for(int i:map[now])if(i!=pre)vis[now]+=f(i,now);
return vis[now];
}
int main(int argc,char*argv[],char**env){
scanf("%d",&n);
for(int i(1),u,v;i<n;++i){
scanf("%d %d",&u,&v);
map[u].push_back(v),map[v].push_back(u);
}
for(int i(1);i<=n;++i){
for(int idx:map[i]){
pre=now;
now=f(idx,i);
if(pre!=now&&pre!=-1)goto nxt;
}
printf("%d ",i);
nxt:pre=now=-1;
}
return 0;
}
这里空空如也
有帮助,赞一个