Submission #356297

#TimeUsernameProblemLanguageResultExecution timeMemory
356297sean617Dreaming (IOI13_dreaming)C++98
24 / 100
157 ms17908 KiB
#include "dreaming.h" #include <iostream> #include <cstdio> #include <vector> #define SZ 100005 using namespace std; int MM = 2e9; int n, m, mx, po, cnt, mn, md, ans, m1, m2, m3, v[SZ]; vector<int> a[SZ], b[SZ], c; void f(int p, int q, int w) { int i, t; if (w > mx) { mx = w; po = p; } v[p] = cnt; for (i = 0; i < a[p].size(); i++) { t = a[p][i]; if (t == q) continue; f(t, p, w + b[p][i]); } } int g(int p, int q, int w) { int i, t, t2; if (p == c[1]) return 1; for (i = 0; i < a[p].size(); i++) { t = a[p][i]; if (t == q) continue; if (g(t, p, w + b[p][i])) { t2 = max(w, mx - w); mn = min(mn, t2); return 1; } } return 0; } int travelTime(int N, int M, int L, int A[], int B[], int T[]) { int i, j, t1, t2, t3; n = N; m = M; for (i = 0; i < m; i++) { // scanf ("%d %d %d", &t1, &t2, &t3); t1 = A[i]; t2 = B[i]; t3 = T[i]; a[t1].push_back(t2); a[t2].push_back(t1); b[t1].push_back(t3); b[t2].push_back(t3); } for (i = 0; i < n; i++) { if (v[i]) continue; cnt++; mx = -1; c.clear(); f(i, 0, 0); c.push_back(po); mx = -1; f(po, 0, 0); ans = max(ans, mx); c.push_back(po); if (mx == 0) { continue; } mn = MM; g(c[0], 0, 0); if (mn > m1) { m3 = m2; m2 = m1; m1 = mn; } else if (mn > m2) { m3 = m2; m2 = mn; } else if (mn > m3) { m3 = mn; } // printf("%d %d\n", c[0], c[1]); } if (m == n - 1) { cout << ans; return 0; } ans = max(ans, m1 + m2 + L); if (cnt >= 3) ans = max(ans, m2 + m3 + L * 2); return ans; }

Compilation message (stderr)

dreaming.cpp: In function 'void f(int, int, int)':
dreaming.cpp:18:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |     for (i = 0; i < a[p].size(); i++) {
      |                 ~~^~~~~~~~~~~~~
dreaming.cpp: In function 'int g(int, int, int)':
dreaming.cpp:28:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |     for (i = 0; i < a[p].size(); i++) {
      |                 ~~^~~~~~~~~~~~~
dreaming.cpp: In function 'int travelTime(int, int, int, int*, int*, int*)':
dreaming.cpp:42:12: warning: unused variable 'j' [-Wunused-variable]
   42 |     int i, j, t1, t2, t3;
      |            ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...