Submission #1039592

#TimeUsernameProblemLanguageResultExecution timeMemory
1039592PlurmInside information (BOI21_servers)C++11
5 / 100
3577 ms43924 KiB
#include <bits/stdc++.h> using namespace std; vector<int> g[500005]; vector<int> rg[500005]; int cnt[500005]; bool search(int a, int d){ if(a == d) return true; for(int v : g[a]) if(search(v, d)) return true; return false; } int count(int d){ int ret = cnt[d]; for(int v : rg[d]) ret += count(v); return ret; } int main(){ ios::sync_with_stdio(false); cin.tie(0); int n, k; cin >> n >> k; k += n-1; vector<tuple<int,int,int>> cmds; vector<int> ids(n+1); for(int i = 1; i <= n; i++){ ids[i] = i; } int last = n; for(int i = 0; i < k; i++){ string cmd; cin >> cmd; int a, b, d; switch(cmd[0]){ case 'S': cin >> a >> b; last++; g[last].push_back(ids[a]); g[last].push_back(ids[b]); rg[ids[a]].push_back(last); rg[ids[b]].push_back(last); ids[a] = ids[b] = last; cmds.push_back({0, a, b}); break; case 'Q': cin >> a >> d; cmds.push_back({1, a, d}); break; case 'C': cin >> d; cmds.push_back({2, d, 0}); break; } } for(int i = 1; i <= n; i++){ ids[i] = i; cnt[i]++; } last = n; for(int i = 0; i < k; i++){ int a, b, d; switch(get<0>(cmds[i])){ case 0: a = get<1>(cmds[i]); b = get<2>(cmds[i]); cnt[ids[a]]--; cnt[ids[b]]--; last++; ids[a] = ids[b] = last; cnt[last] += 2; break; case 1: a = get<1>(cmds[i]); d = get<2>(cmds[i]); if(search(ids[a], d)) cout << "yes" << endl; else cout << "no" << endl; break; case 2: d = get<1>(cmds[i]); cout << count(d) << endl; break; } } return 0; }
#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...