Submission #849170

#TimeUsernameProblemLanguageResultExecution timeMemory
849170not_from_hereRace (IOI11_race)C++14
Compilation error
0 ms0 KiB
// ඞ #pragma GCC optimize("Ofast") //#pragma GCC target("popcnt") #include <bits/stdc++.h> #include <ext/pb_ds/tree_policy.hpp> #include <ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; #ifdef LOCAL #include "debug.h" #define dbg(...) debug_out(splitter(#__VA_ARGS__), 0, __LINE__, __VA_ARGS__) #else #define dbg(...) #endif #define int long long #define itn int #define ALL(v) (v).begin(), (v).end() #define mem(a, x) memset(a , x , sizeof(a)) #define f first #define s second #define mb make_pair #define pb push_back #define popCnt __builtin_popcountll typedef long long ll; typedef long double ld; typedef unsigned long long ull; typedef vector<int> vi; typedef vector<string> vs; typedef vector<vector<int>> vvi; typedef pair <int, int> pii; typedef vector<pair <int, int>> vpii; typedef vector<vector<char>> vvc; const int mod = 1e9 + 7; const int oo = 0x5f5f5f5f; const long double PI = acos(-1.0L); int ceiledLog2 (int x){return __lg(x) + (__builtin_popcount(x) != 1);} ll toLL (int first, int second, int mx){return (1LL*first*mx) + second;} template <class T, class U> T GCD (T a, U b) {return (!b ? a : GCD(b, a%b));} template <class T, class U> T LCM (T a, U b) {return ((a/GCD(a, b)) * b);} template <class T> bool isSquare (T n) {T sq = sqrt(n); return (sq*sq)==n;} template <typename T> T Unique(T x){sort(ALL(x));x.resize(distance(x.begin(),unique(ALL(x))));return x;} template <typename T> using oset = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; //bool sortBySecond (pii &a, pii &b) {return a.second < b.second;} //asc int ys[] = {-1, -1, 0, 1, 1, 1, 0, -1}; //edges [0, 2, 4, 6] int xs[] = {0, 1, 1, 1, 0, -1, -1, -1}; //-----------------------------------------------------------------------------// //const int N = ?e5 + 5; int n, k,ans=2e9, kk; vector<vpii> g; vi a; string s; int w=0; struct B_CH_SACK { int n, timer = 0; vector<int> sz, b_ch; vector<int> order, tin, tout; map<int, int> freq; vi to,depth; B_CH_SACK(int _n = 0) { n = _n; if (n) { freq[0]=0; to.resize(n, 0); depth.resize(n, 0); sz.resize(n, 1); b_ch.resize(n, -1); tin.resize(n); tout.resize(n); dfs(0, -1); solve(0, -1, false); } } void dfs(int u, int p, int here=0,int lev=0) { tin[u] = timer++; order.push_back(u); to[u]=here; depth[u]=lev; int mx = 0, idx = -1; for (int i = 0; i < g[u].size(); ++i) { int v=g[u][i].f; int c=g[u][i].s; if (v == p) continue; dfs(v, u,here+c,lev+1); sz[u] += sz[v]; if (sz[v] > mx) { mx = sz[v]; idx = v; } } b_ch[u] = idx; tout[u] = timer-1; } void solve(int u, int p, bool keep) { int cpy=-1; for (int i = 0; i < g[u].size(); ++i) { int v=g[u][i].f; int c=g[u][i].s; if (v == b_ch[u])cpy=c; if (v == p || v == b_ch[u]) continue; solve(v, u, false); } if (b_ch[u] != -1) { solve(b_ch[u], u, true); w++; int dif=k-cpy; if (freq.count(dif)) ans=min(ans,w+freq[dif]); } dbg(u, keep, freq); for (int j = 0; j< g[u].size(); ++j) { int v=g[u][j].f; int c=g[u][j].s; if (v == p || v == b_ch[u]) continue; for (int i = tin[v]; i <= tout[v]; i++) { int x = order[i]; int t=to[i]-to[u]-cpy; int dif=k-t-(2*cpy); if (freq.count(dif)) ans=min(ans,depth[i]-depth[u]+freq[dif]+w); freq[t] = min(freq[t],depth[i]-depth[u]-1); } } dbg(u, keep, freq); if (!keep) { freq.clear(); freq[0]=0; k = kk; w=0; } else{ if (~cpy) k -= cpy; } } } sack; int best_path(int N, int K, int H[][2], int L[]){ n=N; k=kk=K; g = vector<vpii>(n); for (int i = 0; i < n-1; ++i) { int u,v; u=H[i][0], v=H[i][1]; g[u].pb({v,L[i]}); g[v].pb({u,L[i]}); } dbg(g); sack=B_CH_SACK(n); if (ans > 1e7) return -1; return ans; }

Compilation message (stderr)

race.cpp: In member function 'void B_CH_SACK::dfs(long long int, long long int, long long int, long long int)':
race.cpp:94:35: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   94 |                 for (int i = 0; i < g[u].size(); ++i) {
      |                                 ~~^~~~~~~~~~~~~
race.cpp: In member function 'void B_CH_SACK::solve(long long int, long long int, bool)':
race.cpp:112:35: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  112 |                 for (int i = 0; i < g[u].size(); ++i) {
      |                                 ~~^~~~~~~~~~~~~
race.cpp:127:34: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  127 |                 for (int j = 0; j< g[u].size(); ++j) {
      |                                 ~^~~~~~~~~~~~~
race.cpp:132:37: warning: unused variable 'x' [-Wunused-variable]
  132 |                                 int x = order[i];
      |                                     ^
race.cpp:129:29: warning: unused variable 'c' [-Wunused-variable]
  129 |                         int c=g[u][j].s;
      |                             ^
/usr/bin/ld: /tmp/ccdvcFBu.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