求助,只有40分
查看原帖
求助,只有40分
486399
_Wind_楼主2021/8/18 20:38
#include <iostream>
#include <cstring>
using namespace std;

struct node{
	int to,next;
}edge[10005];
int K,N,M,cnt,ans,cow[105],num[1005],head[1005]; 
bool vis[1005];

void add(int x,int y){
	edge[++cnt].to=y;
	edge[cnt].next=head[x];
	head[x]=cnt;
}
void dfs(int cowi){
	num[cowi]++;
	for(int i=head[cowi];i;i=edge[i].next){
		int a=edge[i].to;
		if(!vis[a]){
			vis[a]=1;
			dfs(edge[i].to);
		}
	}
}
int main(){
	cin>>K>>N>>M;
	for(int i=0;i<K;i++){
		cin>>cow[i];
	}
	for(int i=0;i<M;i++){
		int x,y;
		cin>>x>>y;
		add(x,y);
	}
	for(int i=0;i<K;i++){
	    vis[cow[i]]=1;
		dfs(cow[i]);
		memset(vis,0,sizeof(vis));
	}
	for(int i=0;i<N;i++){
		if(num[i]==K){
			ans++;
		}
	}
	cout<<ans;
	return 0;
}
2021/8/18 20:38
加载中...