dfs
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
#define N 1005
int flag[N],s[N][N];
void init(int n)
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
s[i][j]=0;
flag[i]=0;
}
}
void dfs(int u,int n)
{
int i;
if(u>n||u<=0)return ;
flag[u]=1;
for(i=1;i<=n;i++)
if(!flag[i]&&s[u][i])
dfs(i,n);
}
int main()
{
int n,m,k,i,j,x,t;
while(cin>>n>>m>>k)
{
init(n);
while(m--)
{
cin>>i>>j;
s[i][j]=s[j][i]=1;
}
while(k--)
{
cin>>x;
flag[x]=1;
t=0;
for(i=1;i<=n;i++)
if(!flag[i])
{
dfs(i,n);
t++;
}
cout<<t-1<<endl;
memset(flag,0,sizeof(flag));//test dfs一次 flag都会改变
}
}
return 0;
}