Submission #875849

#TimeUsernameProblemLanguageResultExecution timeMemory
875849hqminhuwuRace (IOI11_race)C++14
0 / 100
16 ms54364 KiB
#include <bits/stdc++.h> #define forr(_a,_b,_c) for(_a = (_b); _a <= (_c); ++_a) #define ford(_a,_b,_c) for(_a = (_b) + 1; _a --> (_c);) #define forf(_a,_b,_c) for(_a = (_b); _a < (_c); ++_a) #define st first #define nd second #define ll long long #define ull unsigned long long #define pii pair <int,int> #define pll pair <ll,ll> #define piii pair <int,pii> #define vi vector <int> #define pb push_back #define mp make_pair #define all(x) begin(x),end(x) #define file "test" using namespace std; const int N = 1e6 + 5; const ll oo = 1e9; const ll mod = 1e9 + 7; vector <ll> s[N]; vector <pll> a[N]; ll ans, h[N], f[N]; ll k; void dfs (int u, int p){ f[u] = 0; for (pii e : a[u]){ int v = e.st; if (v != p){ h[v] = e.nd; dfs(v,u); if (s[v].size() > s[u].size()) swap(s[v],s[u]), swap (f[u], f[v]); for (int j = 0; j < s[v].size(); j++){ int d = s[v].size() - j - 1; if (k - d >= 0 && k - d < s[u].size()) ans = min (ans, s[v][j] + s[u][s[u].size() - (k - d) - 1] + f[u] + f[v]); } for (int j = 0; j < s[v].size(); j++) s[u][s[u].size() - (s[v].size() - j)] = min (s[u][s[u].size() - (s[v].size() - j)], s[v][j] - f[u] + f[v]); } } s[u].pb(-f[u]); for (int i = 1; i < h[u]; i++) s[u].pb(oo); f[u]++; if (k < s[u].size()) ans = min (ans, s[u][s[u].size() - k - 1] + f[u]); // if (u == 2) // for (int w : s[u]) // cout << w << " "; // cout << "\n"; } int n,i,u,v,w; int best_path (int nn, int kk, int edge[][2], int ww[]){ ans = oo; n = nn; k = kk; if (k == 1) return 0; forf (i,0,n - 1){ u = edge[i][0]; v = edge[i][v]; w = ww[i]; a[u].pb({v,w}); a[v].pb({u,w}); } dfs(0,0); ans--; return ((ans <= (n - 1)) ? ans : -1); }

Compilation message (stderr)

race.cpp: In function 'void dfs(int, int)':
race.cpp:37:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |    for (int j = 0; j < s[v].size(); j++){
      |                    ~~^~~~~~~~~~~~~
race.cpp:39:29: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   39 |     if (k - d >= 0 && k - d < s[u].size())
      |                       ~~~~~~^~~~~~~~~~~~~
race.cpp:42:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |    for (int j = 0; j < s[v].size(); j++)
      |                    ~~^~~~~~~~~~~~~
race.cpp:50:11: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |     if (k < s[u].size())
      |         ~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...