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

    求树的重心,直接当模板吧。先看POJ题目就知道重心什么意思了。。。

    重心:删除该节点后最大连通块的节点数目最小

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<queue>
     5 #include<stack>
     6 using namespace std;
     7 #define LL long long
     8 #define clc(a,b) memset(a,b,sizeof(a))
     9 #define inf 0x3f3f3f3f
    10 const int maxn=20010;
    11 vector<int>v[maxn];
    12 int vis[maxn],dp[maxn],son[maxn];
    13 int ans,sizee,n;
    14 void dfs(int x){
    15     int bal=0;
    16     son[x]=0;
    17     vis[x]=true;
    18     for(int i=0;i<(int)v[x].size();i++){
    19         int to=v[x][i];
    20         if(vis[to]) continue;
    21             dfs(to);
    22         son[x]+=son[to]+1;
    23         bal=max(bal,son[to]+1);
    24     }
    25     bal=max(bal,n-son[x]-1);
    26     if(bal<sizee||(bal==sizee && x<ans)){
    27         ans=x,sizee=bal;
    28     }
    29 }
    30 int main(){
    31     int T;
    32     scanf("%d",&T);
    33     while(T--){
    34     scanf("%d",&n);
    35     for(int i=1;i<=n;i++)
    36         v[i].clear();
    37     for(int i=1;i<=n-1;i++){
    38         int x,y;
    39         scanf("%d%d",&x,&y);
    40         v[x].push_back(y);
    41         v[y].push_back(x);
    42     }
    43     clc(vis,0);
    44     sizee=inf;
    45     dfs(1);
    46     printf("%d %d
    ",ans,sizee);
    47     }
    48     return 0;
    49 }
    View Code
  • 相关阅读:
    media query 开发总结
    整屏滚动
    移动端reset样式
    中国天气网 城市代码 sql语句
    php文章tag标签的增删
    oracle的分号和斜杠/
    php 操作 oracle lob 数据2
    php 操作 oracle lob 数据
    oracle创建用户
    php进度条
  • 原文地址:https://www.cnblogs.com/ITUPC/p/5393415.html
Copyright © 2011-2022 走看看