# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
140536 | luciocf | Bridges (APIO19_bridges) | C++14 | 3029 ms | 8440 KiB |
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 namespace std;
typedef pair<int, int> pii;
const int maxn = 5e4+10;
const int maxm = 1e5+10;
struct Edge
{
int u, v, w;
} edge[maxm], aux[maxm];
int n, m;
int ans;
int pai[maxn], peso[maxn];
vector<pii> grafo[maxn];
bool comp(Edge a, Edge b) {return a.w > b.w;}
void init(void)
{
for (int i = 1; i <= n; i++)
{
pai[i] = i, peso[i] = 1;
grafo[i].clear();
}
}
int Find(int x)
{
if (pai[x] == x) return x;
return pai[x] = Find(pai[x]);
}
void Join(int x, int y)
{
x = Find(x), y = Find(y);
if (x == y) return;
if (peso[x] < peso[y]) swap(x, y);
pai[y] = x, peso[x] += peso[y];
}
void get_mst(void)
{
init();
for (int i = 1; i <= m; i++)
aux[i] = edge[i];
sort(aux+1, aux+m+1, comp);
for (int i = 1; i <= m; i++)
{
if (Find(aux[i].u) != Find(aux[i].v))
{
Join(aux[i].u, aux[i].v);
grafo[aux[i].u].push_back({aux[i].v, aux[i].w});
grafo[aux[i].v].push_back({aux[i].u, aux[i].w});
}
}
}
void dfs(int u, int p, int w)
{
ans++;
for (auto v: grafo[u])
if (v.first != p && v.second >= w)
dfs(v.first, u, w);
}
int main(void)
{
int q;
scanf("%d %d", &n, &m);
for (int i = 1; i <= m; i++)
{
int u, v, w;
scanf("%d %d %d", &u, &v, &w);
edge[i] = {u, v, w};
}
scanf("%d", &q);
for (int i = 1; i <= q; i++)
{
int op;
scanf("%d", &op);
if (op == 1)
{
int ind, w;
scanf("%d %d", &ind, &w);
edge[ind].w = w;
}
else
{
int u, w;
scanf("%d %d", &u, &w);
get_mst();
ans = 0;
dfs(u, 0, w);
printf("%d\n", ans);
}
}
}
Compilation message (stderr)
# | 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... |