万紫千红 求调
查看原帖
万紫千红 求调
1422369
zhangxingrong楼主2025/7/25 19:49
#include<bits/stdc++.h>
using namespace std;
const int N=10100;
struct node {
	int r,nxt;
};
node a[N];
int head[N],tot,s=0,sum[N],book[1010][1010];
int start[110];
void add(int u,int v) {
	tot++;
	a[tot].nxt=head[u];
	a[tot].r=v;
	head[u]=tot;

}
void dfs(int x){
	sum[x]++;
	for(int i=head[x];i!=0;i=a[i].nxt){
		int v=a[i].r;
		if(!book[i][v]){
			book[i][v]=1;
			dfs(i);
			book[i][v]=0;
		}
	}
	return;
} 
int main() {
	int k,n,m,u,v;
	cin>>k>>n>>m;
	for(int i=1;i<=k;i++){
		cin>>start[i];
	}
	for(int i=1;i<=m;i++){
		cin>>u>>v;
		add(v,u); 
	}
	for(int i=1;i<=k;i++){
		memset(book,0,sizeof(book));
		dfs(start[i]);
	}
	for(int i=1;i<=n;i++){
		if(sum[i]==k)s++;
	}
	cout<<s;
	return 0;
}
2025/7/25 19:49
加载中...