代码:
#include <bits/stdc++.h>
using namespace std ;
vector <int> e[100005];
int n , m , beg , to , ans;
bool mar[100005] ;//false
void dfs( int x ){
if( e[x].empty() == true ){
if( x >= ans ){
ans = x ;
}
return ;
}
if( x >= ans ){
ans = x ;
}
mar[x] = true ;
bool k = false ;
//如果全是true则找不了
for( int i = 0 ; i < e[x].size() ; i ++ ){
if( mar[e[x][i]] == true){
k = true ;
}
}
if( k == true ){
return ;
}
for( int i = 0 ; i < e[x].size() ; i ++ ){
dfs(e[x][i]);
mar[e[x][i]] = false ;
}
}
int main(){
scanf("%d %d" , &n , &m );
for( int i = 0 ; i < m ; i ++ ){
scanf("%d %d" , &beg , &to );
e[beg].push_back(to);
}
for( int i = 1 ; i <= n ; i ++ ){
ans = 0 ;
memset(mar,0,sizeof(mar));
dfs(i);
cout << ans << " ";
}
return 0 ;
}
感谢大佬