#include <bits/stdc++.h>
#define int long long
#define F first
#define S second
using namespace std;
const int N = 5e4 + 10;
const int inf = 1e9;
struct DSU {
int par[N], siz[N];
void Init(int n) {
for(int i = 1; i <= n; i++) {
par[i] = i;
siz[i] = 1;
}
}
int get(int x) {
return (x == par[x] ? x : get(par[x]));
}
void unite(int u, int v) {
u = get(u); v = get(v);
if(u == v) return;
if(siz[u] > siz[v]) swap(u, v);
par[u] = v;
siz[v] += siz[u];
}
int query(int u) {
return siz[get(u)];
}
};
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, m;
cin >> n >> m;
vector<array<int,3>> e(m + 1);
for(int i = 1; i <= m; i++) {
cin >> e[i][0] >> e[i][1] >> e[i][2];
}
int q;
cin >> q;
while(q--) {
int type, i, v;
cin >> type >> i >> v;
if(type == 1) {
e[i][2] = v;
} else {
DSU dsu;
dsu.Init(n);
for(int i = 1; i <= m; i++) if(e[i][2] >= v) dsu.unite(e[i][0], e[i][1]);
cout << dsu.query(i) << "\n";
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |