题库 信息学奥赛题库 题目列表 #include <iostream>#include <cstring>u...
填空题

#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

输出:_________

题目信息
2016年 初赛
-
正确率
0
评论
24
点击