#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INF (1<<29) #define rep(i,n) for(int i=0;i<(int)(n);i++) #define all(v) v.begin(),v.end() #define uniq(v) v.erase(unique(all(v)),v.end()) #define MAX_N 100000 int par[MAX_N]; int _rank[MAX_N]; vector co[MAX_N]; bool can[MAX_N]; void concat(vector &a,vector &b){ for(auto x:b){ a.push_back(x); } b.clear(); } void init(int n){ for(int i=0;i>n>>m>>q; set> e; rep(i,m){ int a,b; cin>>a>>b; a--;b--; e.emplace(a,b); } rep(i,q){ cin>>x[i]>>y[i]; x[i]--;y[i]--; e.erase(make_pair(x[i],y[i])); } init(n); for(auto p: e){ unite(p.first,p.second); } rep(i,n){ if(can[find(i)])ans[i]=-1; } for(int i=q-1;i>=0;i--){ if(!same(x[i],y[i])){ if(can[find(x[i])] ){ vector &v = co[find(y[i])]; for(int u : v){ ans[u] = i+1; } }else if(can[find(y[i])]){ vector &v = co[find(x[i])]; for(int u : v){ ans[u] = i+1; } } unite(x[i],y[i]); } } for(int i=1;i