제출 #951175

#제출 시각아이디문제언어결과실행 시간메모리
951175MinaRagy06다리 (APIO19_bridges)C++17
13 / 100
3022 ms2004 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long

const int N = 100'005;
int par[N], sz[N];
int find(int u) {
	if (u == par[u]) {
		return par[u];
	}
	return par[u] = find(par[u]);
}
void join(int u, int v) {
	u = find(u), v = find(v);
	if (u == v) return;
	if (sz[u] < sz[v]) swap(u, v);
	par[v] = u;
	sz[u] += sz[v];
}
int main() {
	ios_base::sync_with_stdio(0), cin.tie(0);
	int n, m;
	cin >> n >> m;
	array<int, 3> e[m];
	for (int i = 0; i < m; i++) {
		cin >> e[i][0] >> e[i][1] >> e[i][2];
	}
	int q;
	cin >> q;
	while (q--) {
		int t;
		cin >> t;
		if (t == 1) {
			int b, r;
			cin >> b >> r;
			b--;
			e[b][2] = r;
		} else {
			int s, w;
			cin >> s >> w;
			for (int i = 1; i <= n; i++) {
				par[i] = i;
				sz[i] = 1;
			}
			for (int i = 0; i < m; i++) {
				if (e[i][2] >= w) {
					join(e[i][0], e[i][1]);
				}
			}
			cout << sz[find(s)] << '\n';
		}
	}
	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...