제출 #1220562

#제출 시각아이디문제언어결과실행 시간메모리
1220562lukasuliashviliEaster Eggs (info1cup17_eastereggs)C++20
87 / 100
8 ms512 KiB
#include <bits/stdc++.h> #include "grader.h" using namespace std; // #define int long long //#define pb push_back //#define fs first //#define sc second //#define rep(i,a,b) for(int i=a; i<=b; i++) const int N=540; // int query(vector<int> que){ // for(auto x:que){ // cout<<x<<" "; // } // cout<<endl; // int egg;cin>>egg; // return egg; // } int fix[N]; vector<int> vec[N],ans,junk; vector<int> ask(int r ){ vector<int> some; for(int i=0; i<=r; i++){ some.push_back(ans[i]); } return some; } void dfs(int node , int par ){ fix[node]=1; ans.push_back(node); for(auto to :vec[node]){ if(to==par){ continue; } dfs(to,node); } } /// 1 2 3 7 8 10 11 6 5 4 9 int findEgg (int N, vector < pair < int, int > > bridges) { ans.clear(); for(int i=0; i<=N; i++){ vec[i].clear(); fix[i] = 0; } for(int i=0; i<bridges.size(); i++){ int u=bridges[i].first; int v=bridges[i].second; vec[u].push_back(v); vec[v].push_back(u); } dfs(1,0); int l=0; int pas=0; int r=ans.size()-1; while(l<=r){ int mid=(l+r)/2; vector<int> que; que=ask(mid); int egg=query(que); if(egg==1){ r=mid-1; pas=mid; } else{ l=mid+1; } } return ans[pas]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...