zoukankan      html  css  js  c++  java
  • POJ1655 Balancing Act(树的重心)

    树的重心即树上某结点,删除该结点后形成的森林中包含结点最多的树的结点数最少。

    一个DFS就OK了。。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 #define MAXN 222222
     6 struct Edge{
     7     int u,v,next;
     8 }edge[MAXN<<1];
     9 int NE,head[MAXN];
    10 void addEdge(int u,int v){
    11     edge[NE].u=u; edge[NE].v=v; edge[NE].next=head[u];
    12     head[u]=NE++;
    13 }
    14 int n,size[MAXN],x,y;
    15 void dfs(int u,int fa){
    16     int cnt=1,res=0;
    17     for(int i=head[u]; i!=-1; i=edge[i].next){
    18         int v=edge[i].v;
    19         if(v==fa) continue;
    20         dfs(v,u);
    21         cnt+=size[v];
    22         res=max(res,size[v]);
    23     }
    24     size[u]=cnt;
    25     res=max(res,n-size[u]);
    26     if(y>res) y=res,x=u;
    27     else if(y==res && x>u) x=u;
    28 }
    29 int main(){
    30     int t,a,b;
    31     scanf("%d",&t);
    32     while(t--){
    33         NE=0;
    34         memset(head,-1,sizeof(head)); 
    35         scanf("%d",&n);
    36         for(int i=1; i<n; ++i){
    37             scanf("%d%d",&a,&b);
    38             addEdge(a,b); addEdge(b,a);
    39         }
    40         y=(1<<30);
    41         dfs(1,0);
    42         printf("%d %d
    ",x,y);
    43     }
    44     return 0;
    45 }
  • 相关阅读:
    关于ssh的一篇很好的文章
    课后作业--2 阅读计划及问题
    课后作业--1
    课后作业PPT 7
    大道至简 7、8、读后感
    第六章 读后感
    第五篇 读后感
    数组课后作业
    课后作业1:字串加密
    第四篇 读后感
  • 原文地址:https://www.cnblogs.com/WABoss/p/5211277.html
Copyright © 2011-2022 走看看