#include<cstdio>
#include<cstring>
#include<iostream>
#include<vector>
#define SZ 10005
using namespace std;
vector<int>graph[SZ];
int color[SZ],counter;
void DFS(int p)
{
color[p]=1;
counter++;
for(int i=0;i<graph[p].size();i++)
{
if(color[graph[p][i]]==0)
{
DFS(graph[p][i]);
}
}
}
int main()
{
int test,n,m,l,i,x,y,z;
scanf("%d",&test);
while(test--)
{
scanf("%d%d%d",&n,&m,&l);
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
graph[x].push_back(y);
}
counter=0;
for(i=1;i<=l;i++)
{
scanf("%d",&z);
if(color[z]==0)
{
DFS(z);
}
}
printf("%d\n",counter);
for(i=0;i<=n;i++)
{
graph[i].clear();
}
memset(color,0,sizeof(color));
}
return 0;
}
#include<cstring>
#include<iostream>
#include<vector>
#define SZ 10005
using namespace std;
vector<int>graph[SZ];
int color[SZ],counter;
void DFS(int p)
{
color[p]=1;
counter++;
for(int i=0;i<graph[p].size();i++)
{
if(color[graph[p][i]]==0)
{
DFS(graph[p][i]);
}
}
}
int main()
{
int test,n,m,l,i,x,y,z;
scanf("%d",&test);
while(test--)
{
scanf("%d%d%d",&n,&m,&l);
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
graph[x].push_back(y);
}
counter=0;
for(i=1;i<=l;i++)
{
scanf("%d",&z);
if(color[z]==0)
{
DFS(z);
}
}
printf("%d\n",counter);
for(i=0;i<=n;i++)
{
graph[i].clear();
}
memset(color,0,sizeof(color));
}
return 0;
}
0 comments: (+add yours?)
Post a Comment