看题解区的大佬们都说要判断有没有遍历过了,可我这个没判断过了,为什么?
#include<bits/stdc++.h>
using namespace std;
int n,m,u,v,a[100010];
vector<int> pic[100010];
void dfs(int u,int v){
a[u]=v;
for(int i=0;i<pic[u].size();i++){
if(a[pic[u][i]]==0)
dfs(pic[u][i],v);
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>u>>v;
pic[v].push_back(u);
}
for(int i=n;i>=1;i--){
if(a[i]==0)
dfs(i,i);
}
for(int i=1;i<=n;i++)
cout<<a[i]<<' ';
return 0;
}