#include #define rep(i,n) for(int i=0;i > kowareru; int par[200010]; int ranks[200010]; int ans[200010]; void init(int n) { for (int i=0; i> N >> M >> Q; rep(i,M) cin >> A[i] >> B[i]; rep(i,Q) { cin >> C[i] >> D[i]; kowareru.insert(make_pair(C[i], D[i])); } init(N + 1); rep(i,M) { if (kowareru.find(make_pair(A[i], B[i])) == kowareru.end()) { unite(A[i], B[i]); } } rep(i,N) { if (same(1, i)) ans[i] = -1; } for (int i=Q-1; i>=0; i--) { /* vector not_con(2); if (!same(C[i], 1)) { not_con.push_back(C[i]); } if (!same(D[i], 1)) { not_con.push_back(C[i]); } */ /* unite(C[i], D[i]); if ((not_con[0] == C[i] || not_con[1] == C[i]) && same(C[i], 1)) { ans[C[i]] = Q - i; } if ((not_con[0] == D[i] || not_con[1] == D[i]) && same(D[i], 1)) { ans[D[i]] = Q - i; } */ unite(C[i], D[i]); if (same(C[i], 1) && ans[C[i]] != -1) { ans[C[i]] = Q - i; } if (same(D[i], 1) && ans[D[i]] != -1) { ans[D[i]] = Q - i; } } for (int i=2; i