#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,ans;
vector<int>a[100005];
int anss[100005];
bool vis[100005];
void dfs(int x){
ans=max(ans,x);
int len=a[x].size();
for(int i=0;i<len;i++){
if(vis[a[x][i]]==0){
vis[a[x][i]]=1;
if(anss[a[x][i]]!=-1){
ans=max(ans,anss[a[x][i]]);
}else dfs(a[x][i]);
}
}
anss[x]=ans;
}
signed main(){
memset(anss,-1,sizeof anss);
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
a[u].push_back(v);
}
for(int i=1;i<=n;i++){
ans=0;
memset(vis,0,sizeof vis);
vis[i]=1;
dfs(i);
anss[i]=ans;
cout<<ans<<" ";
}
return 0;
}
[quote=“string dp[100005], post:1, topic:34845, username:张乐凡”]
is,0,sizeof vis);
vis[i]=1;
[/quote]
没看懂你这什么操作,vis还memset了?
[quote=“string dp[100005], post:1, topic:34845, username:张乐凡”]
memset(vis,0,sizeof vis);
vis[i]=1;
[/quote]
memset(vis,0,sizeof vis)是什么神奇的操作qoq