30分dfs求调
查看原帖
30分dfs求调
950927
_luo_gu楼主2023/9/24 09:45

代码:

#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 ;
}

感谢大佬

2023/9/24 09:45
加载中...