图的遍历 - 洛谷
/*
* @Description: To iterate is human, to recurse divine.
* @Autor: Recursion
* @Date: 2022-03-18 10:04:24
* @LastEditTime: 2022-03-18 10:46:57
*/
#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<int> v[100001];
int maxx[100001];
void dfs(int x,int d){
if(maxx[x]) return;
maxx[x] = d;
for(int i = 0; i < v[x].size();i ++)
dfs(v[x][i],d);
}
int main()
{
while(cin>>n>>m){
int x,y;
for(int i = 1;i <= m;i ++){
cin >> x >> y;
v[y].push_back(x);
}
for(int i = n;i >= 1;i --)
dfs(i,i);
for(int i = 1;i <=n;i ++)
cout << maxx[i] << " ";
}
}