Submission #113957

#TimeUsernameProblemLanguageResultExecution timeMemory
113957Kastandatimeismoney (balkan11_timeismoney)C++11
100 / 100
1269 ms632 KiB
#include<bits/stdc++.h> using namespace std; struct Edge {int a, b, c, t;}; const int N = 205, M = 10004; int n, m, rc, rt, smc, smt, P[N]; Edge E[M], R[N]; int Find(int v) { return (P[v] < 0 ? v : (P[v] = Find(P[v]))); } inline bool CMP(Edge e1, Edge e2) { return (e1.c * rc + e1.t * rt < e2.c * rc + e2.t * rt); } inline void MST() { int _smc = 0, _smt = 0; vector < Edge > vec; sort(E, E + m, CMP); memset(P, -1, sizeof(P)); for (int i = 0; i < m; i++) if (Find(E[i].a) != Find(E[i].b)) { P[Find(E[i].a)] = Find(E[i].b); _smc += E[i].c; _smt += E[i].t; vec.push_back(E[i]); } if (1LL * smc * smt > 1LL * _smc * _smt) { smc = _smc; smt = _smt; for (int i = 0; i < n - 1; i++) R[i] = vec[i]; } } int main() { scanf("%d%d", &n, &m); for (int i = 0; i < m; i++) { int a, b, c, d; scanf("%d%d%d%d", &a, &b, &c, &d); E[i] = {a, b, c, d}; } smc = smt = M * N; rc = 300; for (int i = 0; i < 300; i++) rt = i, MST(); rt = 300; for (int i = 0; i < 300; i++) rc = i, MST(); rc = 3; for (int i = 0; i < 800; i++) rt = i, MST(); rt = 3; for (int i = 0; i < 800; i++) rc = i, MST(); printf("%d %d\n", smc, smt); for (int i = 0; i < n - 1; i++) printf("%d %d\n", R[i].a, R[i].b); return 0; }

Compilation message (stderr)

timeismoney.cpp: In function 'int main()':
timeismoney.cpp:38:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &n, &m);
     ~~~~~^~~~~~~~~~~~~~~~
timeismoney.cpp:42:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%d%d", &a, &b, &c, &d);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...