This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using i64 = long long;
#ifdef DEBUG
#include "debug.h"
#else
#define debug(...) void(23)
#endif
constexpr int maxN = int(5E4) + 5;
std::vector<int> adj[maxN];
struct DSU {
std::vector<int> par, siz;
DSU() : DSU(0) {}
DSU(int n) { init(n); }
void init(int n) {
par.assign(n, 0);
siz.assign(n, 1);
std::iota(par.begin(), par.end(), 0);
}
int get(int x) {
while(x != par[x]) {
x = par[x] = par[par[x]];
}
return x;
}
bool unite(int a, int b) {
a = get(a), b = get(b);
if(a == b) {
return false;
} else if(siz[a] > siz[b]) {
std::swap(a, b);
}
par[a] = b;
siz[b] += siz[a];
return true;
}
int size(int x) {
return siz[get(x)];
}
};
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int N, M, Q;
std::cin >> N >> M;
std::vector<int> A(M), B(M), C(M);
for(int i = 0; i < M; ++i) {
std::cin >> A[i] >> B[i] >> C[i];
--A[i], --B[i];
}
std::cin >> Q;
if(N <= 1000 && M <= 1000 && Q <= 10000) {
std::vector<int> ord(M);
std::iota(ord.begin(), ord.end(), 0);
DSU dsu;
for(int i = 0; i < Q; ++i) {
debug(i);
int T;
std::cin >> T;
if(T == 1) {
int j, R;
std::cin >> j >> R;
--j;
C[j] = R;
} else {
int S, W;
std::cin >> S >> W;
--S;
dsu.init(N);
std::sort(ord.begin(), ord.end(), [&](int lhs, int rhs) {
return C[lhs] < C[rhs];
});
debug("wtf");
for(int j : ord) {
if(C[j] >= W) {
dsu.unite(A[j], B[j]);
}
}
debug("wtf");
std::cout << dsu.size(S) << '\n';
}
}
return 0;
}
return 0;
}
# | 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... |