Submission #689861

#TimeUsernameProblemLanguageResultExecution timeMemory
689861sudheerays123Experimental Charges (NOI19_charges)C++17
100 / 100
28 ms3356 KiB
#include<bits/stdc++.h>
using namespace std;
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define ll long long int
const ll N = 2e5+5 , INF = 1e18 , MOD = 1e9+7;

vector<ll> par(N);

void make_set(ll n){
	for(ll i = 1; i <= n; i++){
		par[i] = i;
	}
}

ll find(ll x){
	if(x == par[x]) return x;
	return par[x] = find(par[x]);
}

void unite(ll a , ll b){
	a = find(a);
	b = find(b);

	if(a == b) return;

	par[b] = a;
}

void solve(){

	ll n,q;
	cin >> n >> q;

	make_set(2*n);

	while(q--){
		char x;
		ll a,b;
		cin >> x >> a >> b;

		if(x == 'R'){
			unite(a,b);
			unite(a+n,b+n);
		}
		else if(x == 'A'){
			unite(a+n,b);
			unite(a,b+n);
		}
		else{
			if(find(a) == find(b) || find(a+n) == find(b+n)){
				cout << "R\n";
			}
			else if(find(a+n) == find(b) || find(a) == find(b+n)){
				cout << "A\n";
			}
			else cout << "?\n";
		}
	}


	
}

int main(){

	fast;

	ll tc = 1;
	// cin >> tc;
	while(tc--) 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...