Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define FOR(i,a,b) for(i=a;i<=b;i++)
- #define mp(i,j) make_pair(i,j)
- using namespace std;
- pair <int,int> a[100005];
- map< pair<int,int>,int > kt;
- int n,m,q,i,h,k,c,j,d,u,t;
- int gr[100005], dem[100005];
- bool cmp_pair(pair<int, int> A, pair<int, int> B) {
- return (A.first < B.first || (A.first == B.first && A.second < B.second));
- }
- int main()
- {
- c=0;
- cin>>n>>m>>q;
- FOR(i,1,m)
- {
- cin>>h>>k;
- if (h<k)
- {
- a[i].first=h;
- a[i].second=k;
- kt[make_pair(h,k)]=1;
- kt[make_pair(k,h)]=1;
- }
- else
- {
- a[i].first=k;
- a[i].second=h;
- kt[make_pair(h,k)]=1;
- kt[make_pair(k,h)]=1;
- }}
- sort(a+1,a+1+m,cmp_pair);
- FOR(i,1,n) gr[i]=i;
- FOR(i,1,n) dem[i]=1;
- FOR(i,1,m)
- {
- if (gr[a[i].first]==gr[a[i].second]) continue;
- if (gr[a[i].first]<gr[a[i].second])
- {gr[a[i].second]=gr[a[i].first];
- dem[gr[a[i].first]]++;}
- else
- {gr[a[i].first]=gr[a[i].second];
- dem[gr[a[i].second]]++;}
- }
- FOR(i,1,n) if (dem[i]>1) { c++; d+=dem[i];}
- cout<<c<<endl;
- FOR(i,1,q)
- {
- cin>>t>>u;
- if (kt.find(make_pair(t,u))!=kt.end()) cout<<"2"<<endl;
- else if (gr[t]==gr[u]) cout<<"1"<<endl;
- else cout<<"0"<<endl;
- }
- //FOR(i,1,n) cout<<i<<" la "<<dem[i]<<endl;
- //FOR(i,1,m) cout<<a[i].first<<" "<<a[i].second;=<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement