Submission #1141656

#TimeUsernameProblemLanguageResultExecution timeMemory
1141656AliMark71시간이 돈 (balkan11_timeismoney)C++20
40 / 100
3 ms840 KiB
//
//  main.cpp
//  IntensiveCamp 1 2025
//
//  Created by Ali AlSalman on 24/01/2025.
//

#include <bits/stdc++.h>

template<typename T>
using vec = std::vector<T>;
using namespace std;

vec<bool> vs;
vec<vec<pair<int, int>>> adj;

void solve() {
    int n, m;
    cin>>n>>m; vs.resize(n); adj.resize(n);
    if (m == n - 1) {
        pair<int, int> arr[m];
        int s = 0, t = 0;
        while (m--) {
            int a, b, c, d;
            cin>>a>>b>>c>>d; s += c; t += d;
            arr[m] = {b, a};
        }
        
        cout<<s<<" "<<t<<endl;
        for (auto [a, b] : arr) cout<<a<<" "<<b<<endl;
        exit(0);
    }
    
    while (m--) {
        int a, b, c;
        cin>>a>>b>>c>>c;
        adj[a].push_back({b, c});
        adj[b].push_back({a, c});
    }
    
    auto cmp = [](array<int, 3> lhs, array<int, 3> rhs) { return lhs[0] > rhs[0]; };
    priority_queue<array<int, 3>, vec<array<int, 3>>, decltype(cmp)> q(cmp); q.push({0, 0, -1});
    
    int sum = 0;
    queue<pair<int, int>> ans;
    while (!q.empty()) {
        auto [d, u, v] = q.top(); q.pop();
        if (vs[u]) continue;
        vs[u] = 1; ans.push({u, v}); sum += d;
        for (auto [c, d] : adj[u]) if (!vs[c]) {
            q.push({d, c, u});
        }
    }
    
    cout<<sum<<" "<<sum<<endl;
    while (!ans.empty()) {
        if (ans.front().first < 0 || ans.front().second < 0) { ans.pop(); continue; }
        
        cout<<ans.front().first<<" "<<ans.front().second<<endl;
        ans.pop();
    }
}

int main() {
    ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
    
    
    int t = 1;
//    cin>>t;
    while (t--) solve();
}

#Verdict Execution timeMemoryGrader output
Fetching results...