Submission #696304

#TimeUsernameProblemLanguageResultExecution timeMemory
696304Dan4LifeInside information (BOI21_servers)C++17
0 / 100
26 ms692 KiB
#include <bits/stdc++.h> using namespace std; const int mxN = (int)130000; int n, k, p[mxN], tim[mxN], sz[mxN]; int findSet(int i){ return i==p[i]?i:p[i]=findSet(p[i]); } bool isSameSet(int i, int j) { return findSet(i)==findSet(j); } void unionSet(int i, int j){ int x = findSet(i); int y = findSet(j); if(x==y) return; if(sz[x]<sz[y]) swap(x,y); p[y]=x; sz[x]+=sz[y]; } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n >> k; for(int i = 1; i <= n; i++) p[i] = i, sz[i] = 1; for(int _ = 0; _ < n+k-1; _++){ char t; int x, y; cin >> t >> x; if(t=='S'){ cin >> y; tim[x]=tim[y]=_; unionSet(x,y); } else if(t=='Q'){ cin >> y; if(isSameSet(x,y) and tim[x]>=tim[y]) cout << "yes"; else cout << "no"; } else{ cout << sz[findSet(x)]; } if(t!='S') cout << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...