#include using namespace std; #define len(x) (int((x).size())) typedef pair pii; template ostream& operator<<(ostream &out, vector cont) { for(auto it=cont.begin(); it != cont.end(); ++it) out << (it==cont.begin()?"":" ") << *it; return out; } int bfs(vector &start, vector &ok, vector> &E) { int res=0; for(int st: start) { //cerr << "bfs st:" << st << endl; if(!ok[st]) continue; //cerr << "bfs st ok" << st << endl; res++; stack stak; stak.push(st); while(!stak.empty()) { int curr = stak.top(); stak.pop(); ok[curr] = false; for(int nex: E[curr]) { if(!ok[nex]) continue; ok[nex] = false; stak.push(nex); } } } return res; } int main() { int N, M, Qn; scanf("%d%d%d", &N, &M, &Qn); int sq=int(sqrt(N/(4*log2(N)))); vector> E(N); vector> Eset(N); for(int i=0; i b) swap(a, b); Eset[a].insert(b); } for(int i=0; i> Q(Qn); for(int qi=0; qi ok(N, false); vector res(Qn); for(int qi=0; qi> Es(qn); for(int i=0; i starty(qn); vector oki(qn, true); for (int i = 0; i < qn; i++) starty[i] = i; res[qi] = bfs(starty, oki, Es); } else res[qi] = bfs(Q[qi], ok, E); //cerr << "res:" << res[qi] << endl; } for(int qi=0; qi