题库 信息学奥赛题库 题目列表 #include <iostream> #include <s...
填空题
#include <iostream>
#include <string>
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

输出:_________

题目信息
阅读程序 2016年 初赛
-
正确率
0
评论
24
点击
QQ
微信