#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#define M 10001
using namespace std;
int color[M],N;
void DFS_Visit(int);
vector<int>List[M];
int main()
{
register int t,s,i,n,m,l,x,y;
//freopen("in.txt","r",stdin);
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&n,&m,&l);
N=0;
memset(color,0,sizeof(color));
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
List[x].push_back(y);
}
for(i=1;i<=l;i++)
{
scanf("%d",&s);
if(!color[s])
{
N++;
DFS_Visit(s);
}
}
printf("%d\n",N);
for(i=0;i<=n;i++)
List[i].clear();
}
return 0;
}
void DFS_Visit(int u)
{
register int i,x;
color[u]=1;
for(i=0;i<List[u].size();i++)
{
x=List[u][i];
if(color[x]==0)
{
N++;
DFS_Visit(x);
}
}
color[u]=2;
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.