求助
  • 板块学术版
  • 楼主Nostopathy
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/8 10:20
  • 上次更新2024/7/8 11:29:40
查看原帖
求助
1286053
Nostopathy楼主2024/7/8 10:20
#include <iostream>
#include <vector>
using namespace std;
int a[1001], tot[1001], vis[1001];
vector <int> graph[1001];
int u, v, k, n, m, r;
void search(int num){
	vis[num] = 1;
	++ tot[num];
	for(int i = 0; i < graph[num].size(); ++ i){
		if(not vis[graph[num][i]]){
			search(graph[num][i]);
		}
	}
}
int main(){
	cin >> k >> n >> m;
	for(int i = 1; i < n + 1; ++ i){
		cin >> a[i];
	}
	for(int i = 0; i < m; ++ i){
		cin >> u >> v;
		graph[u].push_back(v);
	}
	for(int i = 1; i< k + 1; ++ i) { for(int j=1;j< n + 1;j++) vis[j]=0;  search(a[i]);}
	for(int i = 1; i < n + 1; ++ i){
		if(tot[i] == k){
			++ r;
		}
	}
	cout << r << '\n';
}

题链接:https://www.luogu.com.cn/problem/P2853,帮帮忙谢谢

2024/7/8 10:20
加载中...