zoukankan      html  css  js  c++  java
  • 1336:【例3-1】找树根和孩子

    【题目描述】

    给定一棵树,输出树的根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;
    }
  • 相关阅读:
    在linux下使用sqlcmd
    sqlserver 索引的结构及其存储,索引内容
    据库被标记为RESTORING的处理方式,正在还原中,正在恢复
    sql语句的优化分析
    SQL Server表分区-水平分区
    JavaScript Structure
    JS----Issue
    JavaScript Book Plan
    LINQ
    About JavaScript
  • 原文地址:https://www.cnblogs.com/gaojs/p/14941947.html
Copyright © 2011-2022 走看看