Untitled
unknown
plain_text
a year ago
924 B
6
Indexable
vector<int> par,sz; int find(int a) { if(par[a]==a) return a; return par[a]=find(par[a]); } void unite(int a,int b) { a=find(a); b=find(b); if(a==b) return; if(sz[a]>sz[b]) swap(a,b); par[a]=b; sz[b]+=sz[a]; } vector<int> fn(int n,vector<string> &qt,vector<int> &st1,vector<int> &st2) { par.clear(); sz.clear(); par.resize(n+1); sz.resize(n+1,1); for(int i=1;i<=n;i++) par[i]=i; vector<int> ans; int k=qt.size(); for(int i=0;i<k;i++) { if(qt[i]=="Friend") { // cout<<"friend"<<endl; unite(st1[i],st2[i]); } else { // cout<<"total"<<" "<<find(st1[i])<<" "<<sz[find(st1[i])]<<" "<<find(st2[i])<<" "<<sz[find(st2[i])]<<endl; int temp =sz[find(st1[i])]+sz[find(st2[i])]; ans.push_back(temp); } } return ans; }
Editor is loading...
Leave a Comment