为什么题解里面要逆向保存
#include<bits/stdc++.h>
#define MAXN 100005
using namespace std;
int n,m,ans[MAXN];
vector<int>dp[MAXN];
void dfs(int x,int now){
if(ans[x])return;
ans[x]=now;
for(int i=0;i<dp[x].size();i++){
dfs(dp[x][i],now);
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int x,y;
cin>>x>>y;
dp[x].push_back(y);
}
for(int i=n;i;i--){//原本是i从1到n,后面看题解的改了
dfs(i,i);
}
for(int i=1;i<=n;i++){
cout<<ans[i]<<' ';
}
return 0;
}