帅哥不理解,代码如下
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n, m, k, c[101], cnt, h[1001], cn;
bool vis[101][1001];
struct Egde{int nxt, to;}e[10001];
void add (int from, int to)
{
e[++ cn].nxt = h[from];
e[cn].to = to;
h[from] = cn;
}
void dfs (int nc, int d)
{
for (int i = h[d]; i != 0; i = e[i].nxt)if (! vis[nc][e[i].to])
{
vis[nc][e[i].to] = 1;
dfs (nc, e[i].to);
}
}
signed main()
{
scanf ("%d %d %d", &k, &n, &m);
for (int i = 1; i <= k; ++ i)scanf ("%d", &c[i]);
for (int i = 0; i < m; ++ i)
{
int u, v;
scanf ("%d %d", &u, &v);
add (u, v);
}
for (int i = 1; i <= k; ++ i)
{
vis[i][c[i]] = 1;
dfs (i, c[i]);
}
for (int i = 1; i <= n; ++ i)
{
bool f = 1;
for (int j = 1; j <= k; ++ j)if (! vis[j][i]){f = 0;break;}
if (f)++ cnt;
}
printf ("%d", cnt);
return 0;
}
但是在c++上输出不了答案,一提交就AC了