Submission #1139631

#TimeUsernameProblemLanguageResultExecution timeMemory
1139631tkm_algorithmsEaster Eggs (info1cup17_eastereggs)C++20
0 / 100
1 ms636 KiB
#include <bits/stdc++.h> #include "grader.h" //#include "grader.cpp" using namespace std; #define ll long long #define N 6005 #define pb push_back #define ff first #define ss second #define all(x) x.begin(),x.end() int a[N], t, answer, vis[N], lvl[N], m, par[N], l, r, jog = 1; vector <int> f[N], p; set <int> s; void find(int x) { if(s.find(x) != s.end()) return; s.insert(x); find(par[x]); } void solve(int x) { vis[x] = 1; for(auto i : f[x]) { if(vis[i]) continue; par[i] = x; solve(i); } } int findEgg (int n, vector < pair < int, int > > bridges) { for(int i=1;i<=n;i++) { f[i].clear(); } for(int i=1;i<=n;i++) { par[i] = i; vis[i] = 0; } for(auto i : bridges) { f[i.ff].pb(i.ss); f[i.ss].pb(i.ff); } solve(1); l = 1; r = n; while(l <= r) { int md = (l + r) / 2; p.clear(); s.clear(); for(int i = l; i <= md; i++) { find(i); } for(auto i : s) { p.pb(i); } bool tr = 0; if((int)p.size() > 0) tr = query(p); if(tr) { if(query({md})) return md; r = md - 1; } else { if(query({md})) return md; l = md + 1; } } return l; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...