Submission #598200

#TimeUsernameProblemLanguageResultExecution timeMemory
598200OzyBridges (APIO19_bridges)C++17
0 / 100
53 ms596 KiB
#include <iostream> #include <bits/stdc++.h> using namespace std; #define lli long long int #define debug(a) cout << #a << " = " << a << endl #define debugsl(a) cout << #a << " = " << a << ", " #define rep(i,a,b) for(int i = (a); i <= (b); i++) #define repa(i,a,b) for(int i = (a); i >= (b); i--) #define MAX 1000 #define u second.first #define v second.second #define w first #define padre first #define tam second lli n,m,q,a,b,c,t,x,y; pair<lli, pair<lli,lli> > arr[MAX+2]; set< pair<lli, pair<lli,lli> > > orden; pair<lli,lli> uf[MAX+2]; lli sube(lli pos) { if (uf[pos].padre == pos) return pos; uf[pos].padre = sube(uf[pos].padre); return uf[pos].padre; } void une(lli a, lli b) { uf[b].padre = a; uf[a].tam += uf[b].tam; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> m; rep(i,1,m) { cin >> a >> b >> c; c *= (-1); arr[i] = {c, {a,b} }; orden.insert({c,{a,b} }); } orden.insert( {(1ll<<40), {0,0} }); cin >> q; rep(Q,1,q) { cin >> t >> a >> b; b *= (-1); if (t == 1) { //cambio de peso en el limite auto it = orden.lower_bound(arr[a]); orden.erase(it); arr[a].w = b; orden.insert(arr[a]); } else { if (m == 0) {cout << 1 << endl; continue;} //query rep(i,1,n) uf[i] = {i,1}; auto it = orden.begin(); while ((*it).w <= b) { x = sube((*it).u); y = sube((*it).v); if (x != y) une(x,y); it++; } a = sube(a); cout << uf[a].tam << endl; } } }
#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...