洛谷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;
}

浙公网安备 33010602011771号