Submission #787726

#TimeUsernameProblemLanguageResultExecution timeMemory
787726drkarlicio2107Inside information (BOI21_servers)C++14
5 / 100
305 ms524288 KiB
#include <bits/stdc++.h>
using namespace std;
int l [5000][5000];
int sz [120010];
bitset <120010> bi [120010];
int main(){
	int n, k; cin >> n >> k;
	if (n<=4000){
		for (int i=1; i<n+1; i++){
			l [i][i]=1; sz [i]=1;
		}
		for (int i=0; i<n+k-1; i++){
			char q; cin >> q;
			if (q=='S'){
				int a, b; cin >> a >> b;
				for (int j=1; j<n+1; j++){
					if (l [a][j]+l [b][j]==1) sz [j]++;
					l [a][j]=l [b][j]=max (l [a][j], l [b][j]);
				}
			}
			else if (q=='Q'){
				int a, b; cin >> a >> b;
				if (l [a][b]==1) cout << "yes" << endl;
				else cout << "no" << endl;
			}
			else {
				int d; cin >> d;
				cout << sz [d] << endl;
			}
		}
	}
	else {
		for (int i=1; i<n+1; i++){
			bi [i][i]=1; sz [i]=1;
		}
		for (int i=0; i<n+k-1; i++){
			char q; cin >> q;
			if (q=='S'){
				int a, b; cin >> a >> b;
				bi [a]|=bi [b];
				bi [b]|=bi [a];
			}
			else if (q=='Q'){
				int a, b; cin >> a >> b;
				if (bi [a][b]==1) cout << "yes" << endl;
				else cout << "no" << endl;
			}
		}
	}
	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...