码迷,mamicode.com
首页 > 其他好文 > 详细

1336:【例3-1】找树根和孩子

时间:2021-06-28 20:18:59      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:cto   amp   div   iter   root   nbsp   mes   vector   ace   

【题目描述】

给定一棵树,输出树的根rootroot,孩子最多的结点maxmax以及他的孩子。

【输入】

第一行:nn(结点个数100≤100),mm(边数200≤200)。

以下mm行:每行两个结点xx和yy,表示yy是xx的孩子(x,y1000x,y≤1000)。

【输出】

第一行:树根:rootroot;

第二行:孩子最多的结点maxmax;

第三行:maxmax的孩子(按编号由小到输出)。

【输入样例】

8 7
4 1
4 2
1 3
1 5
2 6
2 7
2 8

【输出样例】

4
2 
6 7 8
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n, m;
    cin >> n >> m;
    vector<int> dad(n + 1);
    vector <set<int>> son(n + 1);
    int x, y; // y是x的孩子
    for (int i = 0; i < m; i++) {
        cin >> x >> y;
        dad[y] = x;
        son[x].insert(y);
    }
    int root = x;
    while (dad[root] != 0) {
        root = dad[root];
    }
    int max = 1;
    for (int i = 2; i < son.size(); i++) {
        if (son[max].size() < son[i].size()) {
            max = i;
        }
    }
    cout << root << endl;
    cout << max << endl;
    for (set<int>::iterator it = son[max].begin();
         it != son[max].end(); ++it) {
        cout << *it << " ";
    }
    return 0;
}

 

1336:【例3-1】找树根和孩子

标签:cto   amp   div   iter   root   nbsp   mes   vector   ace   

原文地址:https://www.cnblogs.com/gaojs/p/14941947.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!