Submission #1168150

#TimeUsernameProblemLanguageResultExecution timeMemory
1168150Troll321Inside information (BOI21_servers)C++20
5 / 100
489 ms589824 KiB
#include <bits/stdc++.h>
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef pair<bool, bool> pbb;
const ll MAXN = 120000 + 5;
const ll MAXQ = 2*MAXN;

// 5 5
// S 1 2
// S 3 4
// S 5 4
// S 2 3
// C 1
// C 2
// C 3
// C 4
// C 5

ll n, k;
pair<char, pll> query[MAXQ];
// {Type, {a, b}}

vector<ll> server[MAXN];
ll cnt[MAXN];

void addEdge(ll a, ll b) {
	vector<ll> tmpa = server[a];
	vector<ll> tmpb = server[b];

	for (int i = 0; i < tmpa.size(); ++i) {
		server[b].push_back(tmpa[i]);
		cnt[tmpa[i]]++;
	}
	for (int i = 0; i < tmpb.size(); ++i) {
		server[a].push_back(tmpb[i]);
		cnt[tmpb[i]]++;
	}
}

void data(ll a, ll b) {
	bool ada = false;
	for (int i = 0; i < server[a].size(); ++i) {
		if(server[a][i] == b) {
			ada = true;
			break ;
		}
	}

	cout << (ada ? "yes" : "no") << "\n";
}

void count(ll a) {
	cout << cnt[a] << "\n";
}

void input() {
	cin >> n >> k;

	for (int i = 1; i <= n; ++i) {
		server[i].push_back(i);
		cnt[i] = 1;
	}

	for (int i = 1; i <= n+k-1; ++i) {
		cin >> query[i].fi;
		switch(query[i].fi) {
		case 'S':
			cin >> query[i].se.fi >> query[i].se.se;
			addEdge(query[i].se.fi, query[i].se.se);
			break ;
		case 'Q':
			cin >> query[i].se.fi >> query[i].se.se;
			data(query[i].se.fi, query[i].se.se);
			break ;
		case 'C':
			cin >> query[i].se.fi;
			count(query[i].se.fi);
			break ;
		}
	}
}

int main() {
	ios_base::sync_with_stdio(false); cin.tie(0);
	input();
	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...