#include<iostream>
#include<queue>
#include<vector>
using namespace std;
const int MAXN=1e5+10;
int main(){
int n,m;
cin>>n>>m;
vector<int> val[n+1];
int vis[n+1]={0};
int A[n+1]={0};
int len=0;
int v,u;
for(int i=0;i<m;i++){
cin>>v>>u;
val[u].push_back(v);
}
queue<int> q;
for(int i=n;i>0&&vis[i]==0;i--){
A[i]=i;
q.push(i);
while(!q.empty()){
int t =q.front();
vis[t]=1;
q.pop();
for(int j =0;j<val[t].size();j++){
if(vis[val[t][j]]==0){
q.push(val[t][j]);
A[val[t][j]]=A[i];
}
}
}
}
for(int i=1;i<=n;i++){
cout<<A[i]<<" ";
}
cout<<endl;
}
为什么for循环条件设置成i>0&&vis[i]==0的时候就只进行一次for循环啊,之后就算vis[i]有不为0的情况也不进入循环了