Submission #207614

#TimeUsernameProblemLanguageResultExecution timeMemory
207614junodevelopertimeismoney (balkan11_timeismoney)C++17
75 / 100
2090 ms1784 KiB
#include <bits/stdc++.h> #define sz(x) ((int)x.size()) #define fi first #define se second #define pb push_back using namespace std; typedef long long ll; typedef long double ld; typedef pair<ll,ll> pll; struct edge { int u,v; int v1,v2; ll val; bool operator<(const edge& b)const { return val<b.val; } }; int n,m; int par[210]; ll a1=1e6,a2=1e6; vector<edge> e,rv; int pn(int u){return u==par[u]?u:(par[u]=pn(par[u]));} void us(int a,int b) { a=pn(a),b=pn(b); par[b]=a; } pll f(pll p) { for(int i=0;i<=n;i++)par[i]=i; for(auto& it:e)it.val=it.v1*p.fi+it.v2*p.se; sort(e.begin(),e.end()); ll s1=0,s2=0; vector<edge> r; for(auto& it:e) { if(pn(it.u)!=pn(it.v)) { us(it.u,it.v); s1+=it.v1; s2+=it.v2; r.pb(it); } } if(s1*s2<a1*a2) { a1=s1,a2=s2; rv=r; } return {s1,s2}; } int dbg; void solve(pll p1,pll p2) { if(p1==p2)return; pll v(p1.se-p2.se,p2.fi-p1.fi); pll p=f(v); if(p==p1||p==p2)return; solve(p1,p);solve(p,p2); } int main() { ios::sync_with_stdio(stdin);cin.tie(0); cin>>n>>m; for(int i=0;i<m;i++) { int x,y,v1,v2; cin>>x>>y>>v1>>v2; e.pb({x,y,v1,v2}); } pll p1=f({1,0}); pll p2=f({0,1}); solve(p1,p2); cout<<a1<<' '<<a2<<'\n'; for(auto& it:rv)cout<<it.u<<' '<<it.v<<'\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...