• POJ 1655 Balancing Act


    实际上,这个题不难,状态很好写:balace[i]=max(size[j],N-size[i]),其中i是j的父节点,size[i]表示以节点i为根节点所构成子树的节点总数。

    一遍dfs就可以搞定。题目里给的数据是告诉你每两个节点之间有一条边,而不是父子节点关系。。。

    View Code
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <vector>
     4 #define MAX 0xffffff
     5 using namespace std;
     6 
     7 vector <int> G[20001];
     8 int balance[20001];
     9 bool visit[20001];
    10 int n,t;
    11 
    12 int max(int a,int b)
    13 {
    14     return a > b ? a : b;
    15 }
    16 
    17 int min(int a,int b)
    18 {
    19     return a < b ? a : b;
    20 }
    21 
    22 int dfs(int v)
    23 {
    24     visit[v] = true;
    25     int sum = 1,temp;
    26     for(vector<int>::size_type i = 0;i < G[v].size();i++)
    27     {
    28         int u = G[v][i];
    29         if(visit[u])
    30             continue;
    31 
    32         temp = dfs(u);
    33         sum += temp;
    34         balance[v] = max(balance[v],temp);
    35     }
    36     balance[v] = max(balance[v],n - sum);
    37     return sum;
    38 }
    39 int main()
    40 {
    41     scanf("%d",&t);
    42     while(t--)
    43     {
    44         int i,p,q;
    45         scanf("%d",&n);
    46         for(i = 1;i <= n;i++)
    47         {
    48             G[i].clear();
    49             balance[i] = -1;
    50             visit[i] = false;
    51         }
    52         for(i = 1;i < n;i++)
    53         {
    54             scanf("%d%d",&p,&q);
    55             G[p].push_back(q);
    56             G[q].push_back(p);
    57         }
    58 
    59         dfs(1);
    60         int flag,ans = MAX;
    61         for(i = 1;i <= n;i++)
    62         {
    63             if(balance[i] < ans)
    64             {
    65                 ans = balance[i];
    66                 flag = i;
    67             }
    68         }
    69         printf("%d %d\n",flag,ans);
    70     }
    71     return 0;
    72 }
  • 相关阅读:
    libevent简介[翻译]3 前言
    libevent简介[翻译]2 关于异步IO的简单介绍
    gdb调试子进程
    openSUSE Firewalld
    libevent简介[翻译]1 关于这个文档
    构建libevent pdf 文档
    openSUSE编译libevent
    为openSUSE添加源
    .Net Core3.0 WebApi 项目框架搭建 五:仓储模式
    .Net Core3.0 WebApi 项目框架搭建 四:JWT权限验证
  • 原文地址:https://www.cnblogs.com/zhexipinnong/p/2720522.html
Copyright © 2020-2023  润新知