Submission #1145844

#TimeUsernameProblemLanguageResultExecution timeMemory
1145844Ice_manEaster Eggs (info1cup17_eastereggs)C++20
100 / 100
8 ms512 KiB
#include <iostream> #include <vector> #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) { vector < int > q; q.clear(); for(int i = 0 ; i <= mid ; i++) { q.push_back(order[i]); } return query(q); } int binarySearch() { int L = 0, R = order.size() - 1, mid; int ans = 0; /**for(int i = 0; i < order.size(); i++) cout << i << " "; cout << endl; for(int i = 0; i < order.size(); i++) cout << order[i] << " "; cout << endl;*/ while(L < R) { mid = (L + R) / 2; //cout << L << ' ' << R << ' ' << mid << " " << check(mid) <<endl; if(check(mid)) R = mid; else L = mid + 1; } //cout << R << endl; 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) { read(N, bridges); dfs(1, -1); int ans = binarySearch(); clearMemory(); return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...