洛谷P3916

P3916 图的遍历

水题也不会写啊我赣,这题要反向建图

点击查看代码
#include<bits/stdc++.h>
using namespace std;

const int N = 1e5 + 10;

vector<int> G[N];
vector<int> ans(N);
vector<bool> vis(N);

void dfs(int u, int maxv) {
    if(vis[u]) return;
    vis[u] = 1;
    ans[u] = maxv;
    for(auto v : G[u]) {
        dfs(v, maxv);
    }
}

int main() {
    int n, m; cin >> n >> m;

    while(m--) {
        int u, v; cin >> u >> v;
        G[v].push_back(u);
    }
    
    for(int i = n; i >= 1; i--) {
        if(!vis[i]) {
            dfs(i, i);
        }
    }

    for(int i = 1; i <= n; i++) {
        cout << ans[i] << ' ';
    }
    
    return 0;
}
posted @ 2025-05-18 16:40  Chuan81  阅读(9)  评论(0)    收藏  举报