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 }
  • 相关阅读:
    红帽7 创建网络会话
    红帽7 Iptables与Firewalld防火墙
    红帽7 配置网卡
    红帽7 LVM逻辑卷管理器
    红帽7 RAID磁盘冗余阵列
    红帽7 磁盘划分
    wpf学习一(转)
    选中当前点击的位置
    c#客显
    两个程序间的通信有三种
  • 原文地址:https://www.cnblogs.com/anhuizhiye/p/3673317.html
Copyright © 2011-2022 走看看