1 条题解

  • 0
    @ 2025-4-7 20:18:07
    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    const int N = 1010;
    vector<int> g[N];
    int parent[N];
    
    void link(int x, int y) {
        g[x].push_back(y);
        parent[y] = x;
    }
    
    int main() {
        int n, m;
        cin >> n >> m;
    
        for (int i = 1; i <= n; i++) {
            parent[i] = 0;
        }
    
        for (int i = 1; i <= m; i++) {
            int x, y;
            cin >> x >> y;
            link(x, y);
        }
    
        //树根
        int root = 0;
        for (int i = 1; i <= n; i++) {
            if (parent[i] == 0)
            root = i;
        }
        cout << root << endl;
    
        //孩子最多的结点
        int max_children_node = 0;
        int max_children_count = 0;
        for (int i = 1; i <= n; i++) {
            int len = g[i].size();
            if (len >= max_children_count) {
                max_children_count = len;
                max_children_node = i;
            }
        }
        cout << max_children_node << endl;
    
        //孩子最多的结点的孩子的编号
        vector<int> children = g[max_children_node];
    
        sort(children.begin(), children.end());
        int length = children.size();
        for (int i = 0; i < length; i++) {
            if (i != 0) cout << " ";
            cout << children[i];
        }
    
        return 0;
    }
    

    信息

    ID
    132
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    89
    已通过
    32
    上传者