#719. NOIP2016TG-26

NOIP2016TG-26

当前没有测试数据。

  1. (阅读程序写结果)
#include<iostream>
#include<cstring>
using namespace std;
int map[100][100];
int sum[100],weight[100];
int visit[100];
int n;
void dfs(int node){
  visit[node]=1;
  sum[node]=1;
  int v,maxw=0;
  for(v=1;v<=n;v++){
    if(!map[node][v]||visit[v])
      continue;
    dfs(v);
    sum[node]+=sum[v];
    if(sum[v]>maxw)
      maxw=sum[v];
  }
  if(n-sum[node]>maxw)
    maxw=n-sum[node];
  weight[node]=maxw;
}

int main(){
  memset(map,0,sizeof(map));
  memset(sum,0,sizeof(sum));
  memset(weight,0,sizeof(weight));
  memset(visit,0,sizeof(visit));
  cin>>n;
  int i,x,y;
  for(i=1;i<n;i++){
    cin>>x>>y;
    map[x][y]=1;
    map[y][x]=1;
  }
  dfs(1);
  int ans=n,ansN=0;
  for(i=1;i<=n;i++)
    if(weight[i]<ans){
      ans=weight[i];
      ansN=i;
    }
  cout<<ansN<<" "<<ans<<endl;
  return 0;
}

输入:

11

1 2

1 3

2 4

2 5

2 6

3 7

7 8

7 11

6 9

9 10

输出:{{ input(1) }}