Submission #456196

#TimeUsernameProblemLanguageResultExecution timeMemory
456196sean617Race (IOI11_race)C++98
Compilation error
0 ms0 KiB
#include <iostream> #include <cstdio> #include <cstring> #include <vector> #include <queue> #define N 200005 #define A 1000005 using namespace std; int n, k, mn, M = 1e9, s[A], sz[N]; bool v2[N]; vector<int> a[N], b[N]; queue<int> qu; int gs(int p, int q) { int i, t; sz[p] = 1; for (i = 0; i < a[p].size(); i++) { t = a[p][i]; if (t == q || v2[t]) continue; sz[p] += gs(t, p); } return sz[p]; } int gc(int p, int q, int nn) { int i, t; for (i = 0; i < a[p].size(); i++) { t = a[p][i]; if (t != q && !v2[t] && sz[t] *2 > nn) return gc(t, p, nn); } return p; } void g(int p, int q, int w, int cnt) { int i, t; if (w > k) return; mn = min(mn, cnt + s[k - w]); for (i = 0; i < a[p].size(); i++) { t = a[p][i]; if (t == q || v2[t]) continue; g(t, p, w + b[p][i], cnt + 1); } // if (s[w] > cnt) { // s[w] = cnt; // qu.push(w); // } } void up(int p, int q, int w, int cnt) { int i, t; if (w > k) return; if (s[w] > cnt) { s[w] = cnt; qu.push(w); } for (i = 0; i < a[p].size(); i++) { t = a[p][i]; if (t == q || v2[t]) continue; up(t, p, w + b[p][i], cnt + 1); } } void f(int p) { int i, t, cen; gs(p, -1); cen = gc(p, -1, sz[p]); v2[cen] = 1; while (!qu.empty()) { t = qu.front(); qu.pop(); s[t] = M; } s[0] = 0; for (i = 0; i < a[cen].size(); i++) { t = a[cen][i]; if (v2[t]) continue; g(t, -1, b[cen][i], 1); up(t, -1, b[cen][i], 1); } for (i = 0; i < a[cen].size(); i++) { t = a[cen][i]; if (v2[t]) continue; f(t); } } int main() { int i, t1, t2, t3; cin >> n >> k; for (i = 0; i < n - 1; i++) { scanf ("%d %d %d", &t1, &t2, &t3); a[t1].push_back(t2); b[t1].push_back(t3); a[t2].push_back(t1); b[t2].push_back(t3); } mn = M; for (i = 0; i <= k; i++) s[i] = M; f(0); if (mn == M) mn = -1; cout << mn; return 0; }

Compilation message (stderr)

race.cpp: In function 'int gs(int, int)':
race.cpp:18:16: 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++) {
      |              ~~^~~~~~~~~~~~~
race.cpp: In function 'int gc(int, int, int)':
race.cpp:28:16: 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++) {
      |              ~~^~~~~~~~~~~~~
race.cpp: In function 'void g(int, int, int, int)':
race.cpp:39:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   39 |  for (i = 0; i < a[p].size(); i++) {
      |              ~~^~~~~~~~~~~~~
race.cpp: In function 'void up(int, int, int, int)':
race.cpp:57:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |  for (i = 0; i < a[p].size(); i++) {
      |              ~~^~~~~~~~~~~~~
race.cpp: In function 'void f(int)':
race.cpp:74:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   74 |  for (i = 0; i < a[cen].size(); i++) {
      |              ~~^~~~~~~~~~~~~~~
race.cpp:80:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   80 |  for (i = 0; i < a[cen].size(); i++) {
      |              ~~^~~~~~~~~~~~~~~
race.cpp: In function 'int main()':
race.cpp:92:9: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   92 |   scanf ("%d %d %d", &t1, &t2, &t3);
      |   ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccDSi909.o: in function `main':
race.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccrtXT09.o:grader.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccrtXT09.o: in function `main':
grader.cpp:(.text.startup+0x28): undefined reference to `best_path(int, int, int (*) [2], int*)'
collect2: error: ld returned 1 exit status