机房一大佬被黄题P3916硬控,求樤。
#include<bits/stdc++.h>
using namespace std;
#define cst const
#define FOR(i, s, e) for (int i=int(s);i<=int(e);i++)
#define _FOR(i, s, e) for (int i=int(s);i>=int(e);i--)
int n, m;
vector<int> max_v;
vector<vector<int>> adj;
int DFS(cst int &u){
if (max_v[u]!=-1)return max_v[u];
max_v[u]=u;
if (adj[u].empty())return u;
for (cst auto &v:adj[u])max_v[u]=max(DFS(v), max_v[u]);
return max_v[u];
}
int main(){
ios::sync_with_stdio(false), cin.tie(0);
cin>>n>>m, adj.resize(n+1), max_v.resize(n+1);
fill(max_v.begin(), max_v.end(), -1);
int u, v;
FOR (i, 1, m)cin>>u>>v, adj[u].push_back(v);
FOR (i, 1, n)printf("%d ", DFS(i));
return 0;
}