标签:ini from turn const printf pie each bitset hint
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 4834 | Accepted: 2958 |
Description
Input
Output
Sample Input
10 1 2 2 3 3 4 4 5 6 7 7 8 8 9 9 10 3 8
Sample Output
3 8
Hint
Source
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #include<queue> #include<stack> #include<map> #include<stack> #include<set> #include<bitset> using namespace std; #define PI acos(-1.0) #define eps 1e-8 typedef long long ll; typedef pair<int,int > P; const int N=1e5+100,M=1e5+100; const int inf=0x3f3f3f3f; const ll INF=1e18+7,mod=1e9+7; struct edge { int from,to; ll w; int next; }; int n; edge es[M]; int cnt,head[N]; int deep[N],maxx[N]; void init() { cnt=0; memset(head,-1,sizeof(head)); } void addedge(int u,int v) { cnt++; es[cnt].from=u,es[cnt].to=v; es[cnt].next=head[u]; head[u]=cnt; } void dfs(int u,int fa) { deep[u]=1; for(int i=head[u];i!=-1;i=es[i].next) { int v=es[i].to; if(v==fa) continue; dfs(v,u); deep[u]+=deep[v]; maxx[u]=max(maxx[u],deep[v]); } maxx[u]=max(maxx[u],n-deep[u]); } int main() { while(~scanf("%d",&n)) { init(); for(int i=1;i<n;i++) { int u,v; scanf("%d%d",&u,&v); addedge(u,v); addedge(v,u); } memset(deep,0,sizeof(deep)); memset(maxx,0,sizeof(maxx)); dfs(1,0); for(int i=1;i<=n;i++) { //cout<<i<<" * "<<maxx[i]<<endl; if(maxx[i]<=n/2) printf("%d\n",i); } } return 0; }
标签:ini from turn const printf pie each bitset hint
原文地址:http://www.cnblogs.com/GeekZRF/p/7610812.html