Submission #1146481

#TimeUsernameProblemLanguageResultExecution timeMemory
1146481crispxxEaster Eggs (info1cup17_eastereggs)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #include "grader.h" #include "grader.cpp" using namespace std; #define all(x) x.begin(), x.end() #define pb push_back #define nl '\n' int findEgg(int n, vector <pair<int, int>> edges) { vector<set<int>> adj(n); for(auto &[u, v] : edges) { u--, v--; adj[u].emplace(v); adj[v].emplace(u); } vector<int> isl; auto dfs = [&](auto &&dfs, int v, int p) -> void { isl.pb(v + 1); for(auto to : adj[v]) { if(to == p) continue; dfs(dfs, to, v); } }; auto dfs1 = [&](auto &&dfs, int v, int p, vector<vector<int>> &chd) -> void { for(auto to : adj[v]) { if(to == p) continue; dfs(dfs, to, v, chd); for(auto i : chd[to]) chd[v].pb(i); } }; auto check = [&](int x, int y, int sz) { if(x == sz / 2 && y == (sz + 1) / 2) return true; if(x == (sz + 1) / 2 && y == sz / 2) return true; return false; }; vector<int> used(n); int cur = n; while(true) { bool flag = false; for(auto [u, v] : edges) { if(used[u] || used[v]) continue; adj[u].erase(v); adj[v].erase(u); dfs(dfs, u, -1); auto isl1 = isl; isl.clear(); dfs(dfs, v, -1); auto isl2 = isl; isl.clear(); int x = isl1.size(), y = isl2.size(); if(check(x, y, cur)) { if(query(isl1)) { if(x == 1) { return isl1[0]; } for(auto i : isl2) { used[i - 1] = true; cur--; } } else { if(y == 1) { return isl2[0]; } for(auto i : isl1) { used[i - 1] = true; cur--; } } flag = true; break; } adj[u].emplace(v); adj[v].emplace(u); } if(!flag) { for(int r = 0; r < n; r++) { if(used[r]) continue; vector <vector<int>> chd(n); for(int i = 0; i < n; i++) chd[i].pb(i); dfs1(dfs1, r, -1, chd); vector<pair<int, int>> tr; for(auto to : adj[r]) { tr.emplace_back(chd[to].size(), to); } sort(all(tr)); vector<int> isl1, isl2; isl1.pb(r + 1); isl2.pb(r + 1); for(int i = 0; i < (int)tr.size(); i++) { int v = tr[i].second; for(auto to : chd[v]) { isl1.pb(to + 1); } int x = isl1.size(); if(check(x, cur - x + 1, cur + 1)) { for(int j = i + 1; j < (int)tr.size(); j++) { int v1 = tr[j].second; for(auto to : chd[v1]) isl2.pb(to + 1); } if(query(isl1)) { if((int)isl1.size() == 1) { return isl1[0]; } for(auto to : isl2) { to--; if(to == r) continue; used[to] = 1; adj[to].erase(r); adj[r].erase(to); cur--; } } else { if((int)isl2.size() == 1) { return isl2[0]; } for(auto to : isl1) { to--; if(to == r) continue; used[to] = 1; adj[to].erase(r); adj[r].erase(to); cur--; } } flag = true; break; } } if(flag) break; } } if(!flag) break; } return -1; } /** 5 1 2 1 3 2 4 3 5 5 1 2 3 4 5 **/

Compilation message (stderr)

/usr/bin/ld: /tmp/ccMOAdNp.o: in function `query(std::vector<int, std::allocator<int> >)':
grader.cpp:(.text+0x0): multiple definition of `query(std::vector<int, std::allocator<int> >)'; /tmp/cc4HhwzR.o:eastereggs.cpp:(.text+0x770): first defined here
/usr/bin/ld: /tmp/ccMOAdNp.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cc4HhwzR.o:eastereggs.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status