Submission #886772

#TimeUsernameProblemLanguageResultExecution timeMemory
886772WonderfulWhaletimeismoney (balkan11_timeismoney)C++17
5 / 100
911 ms4844 KiB
#include<bits/stdc++.h> using namespace std; #define int int64_t #define pb push_back #define pii pair<int, int> #define st first #define nd second #define sz(x) (int)(x).size() #define all(x) (x).begin(), (x).end() int n, m; vector<pair<int, int>> G[209]; vector<pair<pii, int>> edges; vector<int> cur; vector<pii> G2[209]; bool used[10009]; bool vis[209]; int p[209]; int Find(int x) { return p[x]==x?x:p[x]=Find(p[x]); } void Union(int a, int b) { p[Find(a)] = Find(b); } void dfs(int x, int y) { vis[x] = true; for(pii z:G2[x]) if(z.st!=y) dfs(z.st, x); } bool improve() { for(int i=0;i<n;i++) G2[i].clear(); for(int i=0;i<n-1;i++) { auto e = edges[cur[i]]; G[e.st.st].pb({e.st.nd, e.nd}); G[e.st.nd].pb({e.st.st, e.nd}); memset(vis, 0, sizeof(vis)); dfs(e.st.st, e.st.nd); for(int j=0;j<m;j++) { if(!used[j]) { auto ne = edges[j]; if(vis[ne.st.st]^vis[ne.st.nd]) { if(ne.nd<e.nd) { cur[i] = j; used[j] = true; used[cur[i]] = false; return true; } } } } } return false; } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> m; iota(p, p+n, 0); for(int i=0;i<m;i++) { int a, b, c, _; cin >> a >> b >> c >> _; G[a].pb({b, c}); G[b].pb({a, c}); edges.pb({{a, b}, c}); } random_shuffle(all(edges)); for(int i=0;i<m;i++) { auto [x, y] = edges[i]; if(Find(x.st)!=Find(x.nd)) { used[i] = true; cur.pb(i); Union(x.st, x.nd); } } while(improve()) {} int Sum=0; vector<pii> ans; for(int x:cur) { Sum += edges[x].nd; ans.pb(edges[x].st); } cout << Sum << " " << Sum << "\n"; for(pii x:ans) cout << x.st << " " << x.nd << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...