Submission #657580

#TimeUsernameProblemLanguageResultExecution timeMemory
657580TimDeeInside information (BOI21_servers)C++17
0 / 100
225 ms524288 KiB
#include <bits/stdc++.h>
using namespace std;
#define forn(i,n) for (int i=0; i<n; ++i)

bitset<120000> a[120002];

void solve() {

	int n,q; cin>>n>>q;
	forn(i,n) a[i].set(i);

	vector<string> a(n);
	vector<int> last(n);
	forn(i,n) last[i]=i;
	forn(i,n) a[i]+=i;

	forn(Q,n-1+q) {
		char c;
		cin>>c;
		if (c=='S') {

			int u,v; cin>>u>>v; --u,--v;
			if (u!=last[u]) a[u]=a[last[u]];
			if (v!=last[v]) a[v]=a[last[v]];
			if (a[u].size()<a[v].size()) swap(u,v);
			for (auto x:a[v]) a[u]+=x;
			a[v]=a[u];
			//last[u]=last[v]=u;
			//for (auto x:a[u]) cout<<x<<' '; cout<<"  ";
			//for (auto x:a[v]) cout<<x<<' '; cout<<'\n';

		} else if (c=='Q') {

			int u,x; cin>>u>>x; --u, --x;
			u=last[u];
			cout << ((a[u].find(x)!=a[u].find(n))?"yes\n":"no\n");

		} else {
			int x; cin>>x; --x;
			cout<<0<<'\n';
		}
	}

}

int32_t main() {
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	solve();
	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...