Submission #1166200

#TimeUsernameProblemLanguageResultExecution timeMemory
116620012345678timeismoney (balkan11_timeismoney)C++20
50 / 100
175 ms972 KiB
#include <bits/stdc++.h>

using namespace std;

#define ll long long

const int nx=2e2+5, mx=1e4+5;

ll n, m, dsu[nx], u[mx], v[mx], t[mx], c[mx], res=1e18, rest, resc;
vector<pair<ll, ll>> ans;

int find(int x)
{
    if (dsu[x]==x) return x;
    return dsu[x]=find(dsu[x]);
}

int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n>>m;
    for (int i=1; i<=m; i++) cin>>u[i]>>v[i]>>t[i]>>c[i];
    for (int x=1; x<=15; x++)
    {
        for (int y=1; y<=15; y++)
        {
            for (int i=0;i <n;i ++) dsu[i]=i;
            vector<tuple<int, int>> edg;
            ans.clear();
            ll smt=0, smc=0;
            for (int i=1; i<=m; i++) edg.push_back({x*t[i]+y*c[i], i});
            sort(edg.begin(), edg.end());
            for (auto [_, idx]:edg)
            {
                if (find(u[idx])==find(v[idx])) continue;
                ans.push_back({u[idx], v[idx]});
                smt+=t[idx], smc+=c[idx];
                dsu[find(u[idx])]=find(v[idx]);
            }
            if (smt*smc<res)
            {
                res=smt*smc;
                rest=smt;
                resc=smc;
            }
        }
    }
    cout<<rest<<' '<<resc<<'\n';
    for (auto [i, j]:ans) cout<<i<<' '<<j<<'\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...