Submission #1141498

#TimeUsernameProblemLanguageResultExecution timeMemory
1141498sopaconkEaster Eggs (info1cup17_eastereggs)C++20
100 / 100
10 ms512 KiB
#include <bits/stdc++.h> #include "grader.h" using namespace std; #define pb push_back using lli=long long int; #define deb(x) cout<<#x<<": "<<x<<endl; #define endl '\n' vector<int> euler; vector<int> par; int n; bool check(int a, int b){ vector<bool> vis(n+1,0); for(int i=a; i<=b; ++i){ int aux=euler[i]; while(!vis[aux]){ vis[aux]=1; if(aux!=1){ aux=par[aux]; } } } vector<int> preg; for(int i=1; i<=n; ++i){ if(vis[i]) preg.pb(i); } return query(preg); } void dfs(int x, int p, vector<vector<int>> &ady){ par[x]=p; euler.pb(x); for(int y: ady[x]){ if(y==p) continue; dfs(y,x,ady); } } int findEgg (int N, vector < pair < int, int > > bridges) { n=N; vector<vector<int>> ady(n+1); euler.clear(); par.clear(); par.resize(n+1); for(int i=0; i<n-1; ++i){ int a=bridges[i].first; int b=bridges[i].second; ady[a].pb(b); ady[b].pb(a); } dfs(1,-1,ady); int l=0; int r=n-1; while(l!=r){ int m=(l+r)/2; if(check(l,m)){ r=m; } else{ l=m+1; } } return euler[l]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...