#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,m,fa[400005],sum,k,sz[400005];
stack<int> s, ans;
vector<int> p[200005];
unordered_map<int,int> mp;
int find(int x){
return fa[x] == x ? x : find(fa[x]);
}
void merge(int x,int y){
if(sz[x] < sz[y]) swap(x, y);
fa[find(y)] = find(x);
sz[x] += sz[y];
}
signed main()
{
cin>>n>>m;
sum = n;
for(int i=0;i<n;i++)
fa[i]=i,sz[i] = 1;
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
p[x].push_back(y);
p[y].push_back(x);
}
cin>>k;
for(int i=1;i<=k;i++)
{
int x;
cin>>x;
s.push(x);
mp[x] = 1;
}
for(int i=0;i<n;i++)
{
if(mp[i])continue;
int ri = find(i);
for(int j : p[i])
{
int rj = find(j);
if(!mp[j] && rj != ri)
{
sum -= (sz[rj] == 1) + (sz[ri] == 1);
merge(i,j);
}
}
}
sum -= k;
while(s.size())
{
ans.push(sum);
int i = s.top();
s.pop();
mp[i] = 0;
int f = 0;
for(int j : p[i])
if(!mp[j] && find(j) != find(i))
merge(i,j), sum--, f = 1;
if(f) sum++;
}
ans.push(sum);
while(ans.size())cout << ans.top() << endl, ans.pop();
return 0;
}
有RE,WA,TLE都有。。。