zoukankan      html  css  js  c++  java
  • poj1655(dfs,树形dp,树的重心)(点分治基础)

    题意:就是裸的求树的重心。

     1 #include<cstring>
     2 #include<algorithm>
     3 #include<cmath>
     4 #include<cstdio>
     5 #include<iostream>
     6 #define N 20007
     7 #define inf 100000007
     8 using namespace std;
     9 
    10 int n,id,mnum;
    11 int siz[N];
    12 int cnt,head[N],next[N*2],rea[N*2];
    13 
    14 void add(int u,int v)
    15 {
    16     next[++cnt]=head[u];
    17     head[u]=cnt;
    18     rea[cnt]=v;
    19 }
    20 void dfs(int u,int fa)
    21 {
    22     int sum=0,msiz=-1;
    23     siz[u]=1;
    24     for (int i=head[u];i!=-1;i=next[i])
    25     {
    26         int v=rea[i];
    27         if (v==fa) continue;
    28         dfs(v,u);
    29         siz[u]+=siz[v];
    30         msiz=max(msiz,siz[v]);
    31     }
    32     msiz=max(msiz,n-siz[u]);
    33     if ((msiz==mnum&&u<id)||msiz<mnum)
    34     {
    35         id=u;
    36         mnum=msiz;
    37     }
    38 }
    39 int main()
    40 {
    41     int T;scanf("%d",&T);
    42     while(T--)
    43     {
    44         scanf("%d",&n);
    45         cnt=0;
    46         memset(head,-1,sizeof(head));
    47         memset(siz,0,sizeof(siz));
    48         for (int i=1,x,y;i<n;i++)
    49         {
    50             scanf("%d%d",&x,&y);
    51             add(x,y),add(y,x);
    52         }
    53         id=-1,mnum=inf;
    54         dfs(1,-1);
    55         printf("%d %d
    ",id,mnum);
    56     }
    57 }
  • 相关阅读:
    OMNETPP: tictoc
    OMNETPP安装
    Unified SR
    SCM
    DC tunnel
    AIMD
    AQM
    MANAGER POJ1281 C语言
    Pascal Library C语言 UVALive3470
    The 3n + 1 problem C语言 UVA100
  • 原文地址:https://www.cnblogs.com/fengzhiyuan/p/7766420.html
Copyright © 2011-2022 走看看