1 条题解

  • 0
    @ 2026-07-21 12:28:05
    #include <bits/stdc++.h>
    #define int long long
    using namespace std;
    int n,m;
    vector<int>p;
    vector<bool>vis;
    vector<vector<int>>g;
    void dfs(int x,int s){
        vis[x] = true;
        p[x] = s;
    
        for(auto r : g[x]){
            if(vis[r] == false){
                dfs(r,s);
            }
        }
    }
    void solve(){
        cin >> n >> m;
        p.resize(n + 1);
        g.resize(n + 1);
        vis.resize(n + 1);
        for(int i = 1;i <= m;i++){
            int u,v; cin >> u >> v;
            g[v].push_back(u);
        }
        for(int i = n;i >= 1;i--){
            if(vis[i] == false){
                dfs(i,i);
            }
        }
        for(int i = 1;i <= n;i++){
            cout << p[i] << " ";
        }
        return;
    }
    signed main(){
        int T = 1;
        while(T--){
            solve();
        }
        return 0;
    }
    
  • 1

信息

ID
1020
难度
9
分类
(无)
标签
(无)
递交数
1
已通过
1
通过率
100%
上传者