Submission #1244189

#TimeUsernameProblemLanguageResultExecution timeMemory
1244189yue_laitimeismoney (balkan11_timeismoney)C++20
45 / 100
6 ms1156 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; struct e{ long long int x, y; long long int cost; long long int t,c; }; bool cmp(e x, e y){ return x.cost < y.cost; } long long int n, m, x, y, c, todo, p[100000]; long long ans; long long int find(long long int a){ if (p[a] == a) return a; else { p[a] = find(p[a]); return p[a]; } } vector <e> v; long long int ans1=0,ans2=0; vector<pair<long long int ,long long int > >ch; int main() { while (cin >> n >> m){ todo = n-1; ans = 0; v.clear(); for (long long int i = 0; i < n; i++){ p[i] = i; } for (long long int i = 0; i < m; i++){ long long int o,p; cin >> x >> y >> o>>p; v.push_back({x, y, o*p,o,p}); } sort(v.begin(), v.end(), cmp); for (long long int i=0;i<v.size();i++){ x = find(v[i].x); y = find(v[i].y); if (x == y) continue; else { p[y] = x; todo -= 1; ch.push_back(make_pair(v[i].x,v[i].y)); ans1 += v[i].t; ans2 += v[i].c; } } if (todo == 0) cout << ans1 <<" "<<ans2<< "\n"; else cout << "-1\n"; for(long long int i=0;i<ch.size();i++){ cout<<ch[i].first<<" "<<ch[i].second<<endl; } } return 0; } /* 5 7 0 1 161 79 0 2 161 15 0 3 13 153 1 4 142 183 2 4 236 80 3 4 40 241 2 1 65 92 */
#Verdict Execution timeMemoryGrader output
Fetching results...