zoukankan      html  css  js  c++  java
  • POJ 3107

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<string>
     5 #include<algorithm>
     6 #define MAXN 50010
     7 using namespace std;
     8 typedef struct PP{
     9     int id,par;
    10     bool operator < (const PP & a) const{
    11         if(par == a.par) return id < a.id;
    12         return par < a.par;
    13     }
    14 }Partition;
    15 typedef struct{
    16     int to,next;
    17 }Node;
    18 Node edge[2*MAXN];
    19 Partition P[MAXN];
    20 int head[MAXN],vis[MAXN],cnt[MAXN],N;
    21 void addedge(int u,int v,int k){
    22     edge[k].to = v;
    23     edge[k].next = head[u];
    24     head[u] = k;
    25 }
    26 int dfs_child(int s){
    27     vis[s] = cnt[s] = 1;
    28     for(int i = head[s];~i;i = edge[i].next){
    29         int u = edge[i].to;
    30         if(!vis[u]) cnt[s] += dfs_child(u);
    31     }
    32     return cnt[s]--;
    33 }
    34 void dfs_partition(int s){
    35     P[s].id = s;
    36     P[s].par = N-cnt[s]-1;
    37     vis[s] = 1;
    38     for(int i = head[s];~i;i = edge[i].next){
    39         int u = edge[i].to;
    40         if(!vis[u]){
    41             P[s].par = max(P[s].par,cnt[u]+1);
    42             dfs_partition(u);
    43         }
    44     }
    45 }
    46 int main(){
    47     int u,v;
    48     while(~scanf("%d",&N)){
    49         int k = 1;
    50         memset(head,-1,sizeof(head));
    51         for(int i = 1;i <= N-1;i ++){
    52             scanf("%d%d",&u,&v);
    53             addedge(u,v,k++);
    54             addedge(v,u,k++);
    55         }
    56         memset(vis,0,sizeof(vis));
    57         dfs_child(1);
    58         memset(vis,0,sizeof(vis));
    59         dfs_partition(1);
    60         sort(P+1,P+N+1);
    61         k = 1;
    62         while(P[k].par == P[1].par){
    63             printf("%d ",P[k].id);
    64             k++;
    65         }
    66         printf("
    ");
    67     }
    68     return 0;
    69 }
  • 相关阅读:
    [LeetCode]10. Regular Expression Matching
    [LeetCode]9. Palindrome Number
    [LeetCode]8. String to Integer (atoi)
    javascript 内部函数的定义及调用
    canvas和白鹭引擎中平移,旋转,缩放
    改变this指向的call,apply,bind方法
    关于JavaScript中this小有理解
    关于位运算符的计算法方法
    制作简单的GIF动图
    HTML中的单位小结
  • 原文地址:https://www.cnblogs.com/anhuizhiye/p/3673317.html
Copyright © 2011-2022 走看看