B3862 图的遍历(简单版)36分
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1005;
vector<int> graph[MAXN];
int ans[MAXN];
bool visited[MAXN];
void dfs(int v)
{
visited[v]=true;
ans[v]=v;
for(int u:graph[v])
{
if(!visited[u])
dfs(u);
ans[v]=max(ans[v],ans[u]);
}
}
int main()
{
int N,M;
cin>>N>>M;
for(int i=0;i<M;i++)
{
int u,v;
cin>>u>>v;
graph[u].push_back(v);
}
for(int i=1;i<=N;i++)
if(!visited[i])
dfs(i);
for(int i=1;i<=N;i++)
cout<<ans[i]<<" ";
cout<<endl;
return 0;
}