下面是代码,求大佬改进
#include <bits/stdc++.h>
using namespace std ;
#define leng 100001
int n , m , tot ;
int ver[leng] ;
int mnext[leng] , head[leng];
int maxn ;
void add(int x,int y,int z){
ver[++tot]=y;
mnext[tot]=head[x],head[x]=tot;
}
void copy ( int x ){
for(int i=head[x];i;i=mnext[i]){
int y=ver[i];
if( y > maxn ){
maxn = y ;
}
copy(y);
}
}
int main ( ){
scanf("%d %d", &n , &m ) ;
for ( int i= 1 ;i <= m ; ++i ){
int a , b ;
scanf("%d %d" , &a , &b ) ;
add( a , b , 0 ) ;
}
for ( int i =1 ; i <= n ; ++i ){
maxn = i ;
copy(i);
cout << maxn << " " ;
}
return 0 ;
}