1 条题解

  • 0
    @ 2025-7-18 15:50:29
    #include <bits/stdc++.h>
    using namespace std;
    int n, m;
    vector<int> e[5005];
    int d[5005];
    queue<int> q;
    vector<int> ans;
    int main()
    {
        cin >> n >> m;
        for (int i = 1; i <= m; i++)
        {
            int u, v;
            cin >> u >> v;
            e[u].push_back(v);
            d[v]++;
        }
        for (int i = 1; i <= n; i++)
            if (d[i] == 0)
                q.push(i);
        bool flag = false; // 多解标记
        while (!q.empty())
        {
            if (q.size() > 1)
                flag = true;
            int now = q.front();
            q.pop();
            ans.push_back(now);
            for (int i = 0; i < e[now].size(); i++)
            {
                int v = e[now][i];
                d[v]--;
                if (d[v] == 0)
                    q.push(v);
            }
        }
        for (int i = 0; i < ans.size(); i++)
            cout << ans[i] << "\n";
        cout << flag;
        return 0;
    }
    

    信息

    ID
    2714
    时间
    1000ms
    内存
    500MiB
    难度
    3
    标签
    递交数
    8
    已通过
    4
    上传者