这个站外题 我运行超时了
求救
#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;
}