qwq,dfs+反向存图,#1 AC , 其他全 MLE
查看原帖
qwq,dfs+反向存图,#1 AC , 其他全 MLE
774204
A_chicken_boy楼主2023/9/2 15:48
#include <bits/stdc++.h>
using namespace std ;
#define leng 10001
#define N 1001
int k , n , m ;
int head[leng] , ver[leng] , mnext[leng] , tot ;
bool havecow[N] ;
bool canvis[N] ;
int ans ;
void add ( int , int ) ;
void dfs ( int ) ;
int main ( ){
	cin >> k >> n >> m ;
	for ( int i = 1 ; i <= k ; ++i )
	{
		int j ;
		cin >> j ;
		havecow[j] = true ;
	}
	for ( int i = 1 ; i <= m ; ++i ){
		int x , y ;
		cin >> x >> y ;
		add ( y , x ) ;
	}
	int f ;
	for ( int i = 1 ; i <= n ; ++i ){
	//	cout << "i=" << i << " : " ;
		f=0;
		memset( canvis , false , sizeof ( canvis ) ) ;
		dfs ( i ) ;
		canvis[i] = true ;
		for ( int j = 1 ; j <= n ; ++j ){
		//	cout << canvis[j] << " " ;
			if ( havecow[j] ){
				if ( canvis[j] == false ){
					f = 1 ;
					break ;
				}
			}
		}
	//	cout << endl ;
		if ( !f ) ans++;
	}
	cout << ans ;
	return 0 ;
}
void add ( int x , int y ){
	mnext[++tot] = head[x] ;
	head[x] = tot ;
	ver[tot] = y ;	
}
void dfs ( int x ){
	int i ;
	for ( i = head[x] ; i ; i = mnext[i] ){
		int y = ver[i] ;
		canvis[y] = true ;
		dfs ( y ) ;
	}
}
2023/9/2 15:48
加载中...