https://www.luogu.com.cn/problem/P3916
反向建图+dfs搜索
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn=100005;
int n,m,a[maxn];
vector<int>g[maxn];
void dfs(int x,int d)
{
if(a[x]) return;
a[x]=d;
for(int i=0;i<g[x].size();i++)
{
dfs(g[x][i],d);
}
}
int main()
{
int u,v,i;
cin>>n>>m;
for(i=1;i<=m;i++)
{
cin>>u>>v;
g[v].push_back(u);
}
for(i=n;i;i--)
{
dfs(i,i);
}
for(i=1;i<=n;i++)
{
cout<<a[i]<<' ';
}
cout<<endl;
return 0;
}