玄关求条
  • 板块灌水区
  • 楼主wangshuhan0121
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/22 10:47
  • 上次更新2024/9/22 12:06:38
查看原帖
玄关求条
1012159
wangshuhan0121楼主2024/9/22 10:47

这个站外题 我运行超时了

求救

#include<bits/stdc++.h>
using namespace std;
int n, k, m, f[1005], t;
bool dis[1005][1005];
int main() {
	scanf("%d%d%d", &k, &n, &m);
	for (int i = 1; i <= k; i++) {
		int a;
		scanf("%d", &a);
		f[a] = 1;
	}
	for (int i = 1; i <= m; i++) {
		int x, y;
		scanf("%d%d", &x, &y);
		dis[x][y] = 1;
	}
	for (int k = 1; k <= n; k++) {
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= n; j++) {
				dis[i][j] = dis[i][j] || (dis[i][k] && dis[k][j]);
			}
		}
	}
	int ans = 0;
	bool r;
	for (int i = 1; i <= n; i++) {
		r = true;
		for (int j = 1; j <= n; j++) {
			if (i != j && f[j] && !dis[j][i]) {
				r = 0;
				break;
			}
		}
		if (r)ans++;
	}
	printf("%d", ans);
	return 0;
}

2024/9/22 10:47
加载中...