Submission #1270550

#TimeUsernameProblemLanguageResultExecution timeMemory
1270550tklnicRace (IOI11_race)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #include "race.h" using namespace std; #define fastio \ ios_base::sync_with_stdio(false); \ cin.tie(NULL); \ cout.tie(NULL) #define endl '\n' #define pb push_back #define rm pop_back #define f first #define s second #define sz size #define in insert typedef pair<int, int> p; typedef long long ll; const int MAX = 0x3f3f3f3f; const ll LMAX = 0x3f3f3f3f3f3f3f3f; int n, k; ll ans = LMAX; vector<int> sub; vector<vector<p>> g; vector<p> pathSubTree; vector<ll> melhor; vector<ll> flag; int flagAtual = 0; bool roots; void dfsAns(int u, int parent, int sum, int edges){ if(sum > k) return; int rest = k - sum; if(flag[rest] == flagAtual){ ans = min(ans, (ll)edges + melhor[restante]); } for(auto &[v, w]: g[u]){ if(v != parent && !roots[v]){ dfsAns(v, u, sum+w, edges+1); } } } void dfsMelhor(int u, int parent, int sum, int edges){ if(dist > k) return; if(flag[sum] != flagAtual || edges < melhor[sum]){ melhor[sum] = edges; flag[dist] = flagAtual; } for(auto &[v, w]: g[u]){ if(v != parent && !roots[v]){ dfsMelhor(v, u, sum+w, edges+1); } } } int subTree(int u, int parent){ sub[u] = 1; for (auto &[v, w]: g[u]) if (v != parent && !roots[v]) sub[u] += subTree(v, u); return sub[u]; } int centroid(int u, int parent, int size){ for (auto &[v, w]: g[u]) if (v != parent && sub[v] > size/2 && !roots[v]) return centroid(v, u, size); return u; } void algorithm(int root){ int n = subTree(root, -1); int newRoot = centroid(root, -1, n); flagAtual++; melhor[0] = 0; flag[0] = flagAtual; for(auto &[v, w]: g[newRoot]){ if(!roots[v]){ dfsAns(v, newRoot, w, 1); dfsMelhor(v, newRoot, w, 1); } } roots[newRoot] = true; for(auto &[v, w]: g[newRoot]){ if(!roots[v]){ algorithm(v); } } } int best_path(int N, int K, int H[][2], int L[]){ n = N; k = K; g.assign(n, vector<p>()); sub.resize(n); melhor.resize(k+1); flag.assign(k+1, 0); memset(roots, false, sizeof(roots)); // inicializa o vetor de centroids for(int i = 0; i < n-1;i++){ // constroi o grafo g[H[i][0]].pb({H[i][1], L[i]}); g[H[i][1]].pb({H[i][0], L[i]}); } algorithm(0); if(ans == LMAX) return -1; return ans; }

Compilation message (stderr)

race.cpp: In function 'void dfsAns(int, int, int, int)':
race.cpp:37:43: error: 'restante' was not declared in this scope
   37 |         ans = min(ans, (ll)edges + melhor[restante]);
      |                                           ^~~~~~~~
race.cpp:41:33: error: invalid types 'bool[std::tuple_element<0, std::pair<int, int> >::type {aka int}]' for array subscript
   41 |         if(v != parent && !roots[v]){
      |                                 ^
race.cpp: In function 'void dfsMelhor(int, int, int, int)':
race.cpp:48:8: error: 'dist' was not declared in this scope
   48 |     if(dist > k) return;
      |        ^~~~
race.cpp:52:14: error: 'dist' was not declared in this scope
   52 |         flag[dist] = flagAtual;
      |              ^~~~
race.cpp:56:33: error: invalid types 'bool[std::tuple_element<0, std::pair<int, int> >::type {aka int}]' for array subscript
   56 |         if(v != parent && !roots[v]){
      |                                 ^
race.cpp: In function 'int subTree(int, int)':
race.cpp:66:34: error: invalid types 'bool[std::tuple_element<0, std::pair<int, int> >::type {aka int}]' for array subscript
   66 |         if (v != parent && !roots[v])
      |                                  ^
race.cpp: In function 'int centroid(int, int, int)':
race.cpp:75:53: error: invalid types 'bool[std::tuple_element<0, std::pair<int, int> >::type {aka int}]' for array subscript
   75 |         if (v != parent && sub[v] > size/2 && !roots[v])
      |                                                     ^
race.cpp: In function 'void algorithm(int)':
race.cpp:94:18: error: invalid types 'bool[std::tuple_element<0, std::pair<int, int> >::type {aka int}]' for array subscript
   94 |         if(!roots[v]){
      |                  ^
race.cpp:100:10: error: invalid types 'bool[int]' for array subscript
  100 |     roots[newRoot] = true;
      |          ^
race.cpp:103:18: error: invalid types 'bool[std::tuple_element<0, std::pair<int, int> >::type {aka int}]' for array subscript
  103 |         if(!roots[v]){
      |                  ^
race.cpp: In function 'int best_path(int, int, int (*)[2], int*)':
race.cpp:120:12: error: cannot convert 'bool' to 'void*'
  120 |     memset(roots, false, sizeof(roots)); // inicializa o vetor de centroids
      |            ^~~~~
      |            |
      |            bool
In file included from /usr/include/features.h:502,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h:39,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h:679,
                 from /usr/include/c++/13/cassert:43,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:33,
                 from race.cpp:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:57:1: note:   initializing argument 1 of 'void* memset(void*, int, size_t)'
   57 | __NTH (memset (void *__dest, int __ch, size_t __len))
      | ^~~~~