Submission #1146252

#TimeUsernameProblemLanguageResultExecution timeMemory
1146252kolio642Easter Eggs (info1cup17_eastereggs)C++17
0 / 100
1 ms532 KiB
#include <iostream> #include <vector> #include <set> #include "grader.h" #define endl '\n' using namespace std; const int MAXN = 1024; vector < int > e[MAXN]; vector < int > order; int n; void speed() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); } void dfs(int node, int parent) { order.push_back(node); for(int &nb : e[node]) { if(nb == parent) continue; dfs(nb, node); order.push_back(node); } } bool check(int mid, int R) { vector < int > q; set <int> s; q.clear(); s.clear(); for(int i = mid ; i <= R ; i++) { //q.push_back(order[i]); s.insert(order[i]); } for(int i : s) { q.push_back(i); } int qAns = query(q); return qAns; } int binarySearch() { int L = 0, R = order.size() - 1, mid; while(L < R) { mid = (L + R) / 2; if(check(mid, R)) L = mid; else R = mid - 1; } return order[R]; } void read(int N, vector < pair < int, int > > &bridges) { n = N; for(pair <int , int>& i : bridges) { e[i.first].push_back(i.second); e[i.second].push_back(i.first); } } void clearMemory() { for(int i = 0 ; i < MAXN ; i++) { e[i].clear(); } order.clear(); } int findEgg (int N, vector < pair < int, int > > bridges) { //cout << "--------------" << endl; read(N, bridges); dfs(1, -1); /** cout << "Order: "; for(int i : order) cout << i << ' '; cout << endl; **/ int ans = binarySearch(); clearMemory(); return ans; } /** 13 1 2 1 6 1 5 5 4 3 7 5 3 2 9 2 8 9 11 9 13 10 13 13 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13 **/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...