#include using namespace std; #pragma GCC optimize("O3") #define rep(i,n) for (int i=0;i<(n);i++) #define pii pair #define st first #define nd second #define all(V) V.begin(), V.end() const int MAXN=1e5+19; const int S=400; vector E; int kapitan [MAXN]; int n,e,p; int fiind (int x) { if(x==kapitan[x]) return x; kapitan[x]=fiind(kapitan[x]); return kapitan[x]; } void unia(int a, int b) { int x=fiind(a); int y=fiind(b); kapitan[x]=y; } void clear(vector &V) { for (int a:V) kapitan[a]=a; } void count(vector &V) { set ans; for(int a:V) ans.insert(fiind(a)); cout < &V) { for (int a:V) for (int b:V) if(a &V) { for (auto p:E) if(binary_search(all(V),p.st) && binary_search(all(V),p.nd) ) unia(p.st,p.nd); } void pre() { rep(i,MAXN) kapitan[i]=i; cin>>n>>e>>p; rep(i,e) { int a,b; cin>>a>>b; if(a>b) swap(a,b); E.push_back({a,b}); } sort(E.begin(),E.end()); } main() { pre(); rep(i,p) { int m; cin>>m; vector V(m); rep(k,m) cin>>V[k]; sort(all(V)); if(m>S) solve2(V); else solve1(V); count(V); clear(V); } }