填空题
#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;
}

输入:

1 1

1 2

1 3

2 4

2 5

2 6

3 7

7 8

7 11

6 9

9 10

输出:

                

赣ICP备20007335号-2