Submission #1302605

#TimeUsernameProblemLanguageResultExecution timeMemory
1302605witek_cppEaster Eggs (info1cup17_eastereggs)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; using pii = pair<int,int>; using vi = vector<int>; using vvi = vector<vi>; vvi g; vi ak; int mid; int ile_poszlo; vi pyt; // DFS: wchodzimy tylko do węzłów z ak==1 i dodajemy tylko takie węzły. // zatrzymujemy gdy osiągniemy mid void dfs_pyt_safe(int v, int p) { if (ile_poszlo >= mid) return; if (!ak[v]) return; ile_poszlo++; pyt.push_back(v); if (ile_poszlo >= mid) return; for (int u: g[v]) { if (u == p) continue; if (!ak[u]) continue; dfs_pyt_safe(u, v); if (ile_poszlo >= mid) return; } } int findEgg(int n, vector<pii> kr) { g.assign(n+1, {}); for (auto [u,v]: kr) { g[u].push_back(v); g[v].push_back(u); } ak.assign(n+1, 1); unordered_set<int> zb; for (int i=1;i<=n;i++) zb.insert(i); while (zb.size() > 1) { mid = int(zb.size())/2; pyt.clear(); ile_poszlo = 0; int start = *zb.begin(); // Jeśli start trafił na węzeł, który z jakiegoś powodu jest nieaktywny (powinno nie), // to szukamy aktywnego startu w zb: if (!ak[start]) { bool found = false; for (int x: zb) if (ak[x]) { start = x; found = true; break; } if (!found) return *zb.begin(); // safety } dfs_pyt_safe(start, 0); if (pyt.empty()) { // bezpieczeństwo — jeśli nic nie zebraliśmy, zwracamy element zb return *zb.begin(); } int val = query(pyt); if (val) { for (int i=1;i<=n;i++) ak[i]=0; unordered_set<int> newzb; for (int ele: pyt) { ak[ele]=1; newzb.insert(ele); } zb = move(newzb); } else { for (int ele: pyt) { zb.erase(ele); ak[ele]=0; } } } return *zb.begin(); }

Compilation message (stderr)

eastereggs.cpp: In function 'int findEgg(int, std::vector<std::pair<int, int> >)':
eastereggs.cpp:55:19: error: 'query' was not declared in this scope
   55 |         int val = query(pyt);
      |                   ^~~~~