Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:maxn开20010RE,200010就能过了,简直逗我In Reply To:maxn开20010RE,200010就能过了,简直逗我 Posted by:helica at 2015-11-20 11:37:23 > /*--------------------------------------------------------------------------------------*/ > // Helica's header > // Second Editions > // 2015.11.7 > // > #include <algorithm> > #include <iostream> > #include <cstring> > #include <ctype.h> > #include <cstdlib> > #include <cstdio> > #include <vector> > #include <string> > #include <queue> > #include <stack> > #include <cmath> > #include <set> > #include <map> > > //debug function for a N*M array > #define debug_map(N,M,G) printf("\n");for(int i=0;i<(N);i++)\ > {for(int j=0;j<(M);j++){\ > printf("%d",G[i][j]);}printf("\n");} > //debug function for int,float,double,etc. > #define debug_var(X) cout<<#X"="<<X<<endl; > /*--------------------------------------------------------------------------------------*/ > using namespace std; > > const int maxn = 200010; > int N,M,T,kase; > int maxsubtree[maxn],sons[maxn]; > bool vis[maxn]; > > struct Edge{ > int to,next; > }edge[2*maxn]; > > int head[maxn],tot; > > void dfs(int u) > { > vis[u] = 1; > sons[u] = 1; > for(int i=head[u];i != -1;i = edge[i].next) > { > int v = edge[i].to; > if(vis[v]) continue; > dfs(v); > sons[u] += sons[v]; > maxsubtree[u] = max(sons[v],maxsubtree[u]); > } > maxsubtree[u] = max(maxsubtree[u],N-sons[u]); > } > > void addedge(int u,int v) > { > edge[tot].to = v; > edge[tot].next = head[u]; > head[u] = tot++; > } > > int main() > { > scanf("%d",&T); > while(T--) > { > memset(vis,0,sizeof vis); > memset(head,-1,sizeof head); > memset(maxsubtree,0,sizeof maxsubtree); > scanf("%d",&N); > for(int i=1;i<N;i++) > { > int u,v; > scanf("%d%d",&u,&v); > addedge(u,v); > addedge(v,u); > } > dfs(1); > int id,size=maxn; > for(int i=1;i<=N;i++) > { > if(size > maxsubtree[i]) > { > id = i; > size = maxsubtree[i]; > } > } > printf("%d %d\n",id,size); > } > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator