TLE at #9,其他 ≤200ms
#9:n=54547,m=75940
#include <bits/stdc++.h>
using namespace std;
const int N=100010;
int hd[N],val[N],nex[N],idx;
int n;
bool vis[N];
void add(int a,int b){
val[idx]=b,nex[idx]=hd[a],hd[a]=idx++;
}
int maxn=-1,q=0;
void dfs(int u){
vis[u]=true;
maxn=max(maxn,u);
if(maxn==n){
printf("%d ",n);
q=1;
return;
}
for(int i=hd[u];i!=-1;i=nex[i]){
if(!vis[val[i]]){
dfs(val[i]);
}
}
}
int main(){
memset(hd,-1,sizeof(hd));
int m,f,b;
scanf("%d",&n);
scanf("%d",&m);
while(m--){
scanf("%d%d",&f,&b);
add(f,b);
}
for(int i=1;i<=n;i++){
maxn=-1,q=0;
memset(vis,0,sizeof(vis));
dfs(i);
if(!q) printf("%d ",maxn);
}
return 0;
}