#include #define rep(i,a,b) for (int i=a; i PII; typedef vector VI; typedef long long ll; typedef long double ld; const int N = 1e5 + 10; const int sqrtn = 100; int deg[N]; vector v[N]; vector bigV[N]; int f[N]; vector xs; bool is[N]; bool visF[N]; int find(int a){ //cout<>n>>m>>q; vector E; for(int i=1;i<=n;i++) f[i] = i; for(int i=0;i>a>>b; E.pb(mp(a,b)); deg[a] ++; deg[b]++; } for(auto P:E){ a = P.fi; b = P.se; if(deg[a] > sqrtn && deg[b] > sqrtn){ bigV[a].pb(b); bigV[b].pb(a); } else{ v[a].pb(b); v[b].pb(a); } } while(q--){ cin>>n; xs.resize(0); for(int i=0;i>a; xs.pb(a); is[a] = true; } for(auto x:xs){ if(deg[x] <= sqrtn){ for(auto u:v[x]) if(is[u]) un(x,u); } else for(auto u:bigV[x]) if(is[u]) un(x,u); } int ans = n; for(auto x:xs){ if(!visF[find(x)]) visF[find(x)] = true; else ans--; } cout<