제출 #1319653

#제출 시각아이디문제언어결과실행 시간메모리
1319653muhammad-mutahirEaster Eggs (info1cup17_eastereggs)C++20
0 / 100
7 ms1244 KiB
#include <bits/stdc++.h> #include "grader.h" using namespace std; #define print(l) for(auto i:l) cout<<i<<" ";cout<<endl; #define input(t,l,n) vector<t>l(n);for(int i = 0;i<n;i++)cin>>l[i]; // #define int long long #define pb push_back #define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> #define all(l) l.begin(),l.end() #define pii pair<int,int> #define fi first #define se second vector<vector<int>>adj,sub; vector<int>pa; map<int,int>pos; void dfs(int v,int par){ sub[v].pb(v); pa[v] = par; for(int i:adj[v]){ if(pos[i])continue; if(i == par)continue; dfs(i,v); for(int j:sub[i]){ sub[v].pb(j); } } } int findEgg (int N, vector < pair < int, int > > bridges){ adj.clear(); sub.clear(); pa.clear(); pos.clear(); pa.resize(N+1); sub.resize(N+1); adj.resize(N+1); for(auto i:bridges){ adj[i.fi].pb(i.se); adj[i.se].pb(i.fi); } dfs(1,1); int cur = 1; int space = sub[1].size(); int t = 1000; while(t--){ // cout<<cur<<" "<<space<<endl; // print(sub[cur]); vector<vector<int>>ord; int df = 1e9; int val = -1; if(sub[cur].size() == 0)break; for(int i:sub[cur]){ if(i == cur)continue; if(abs((int)sub[i].size()-(space-1)/2) <df){ df = abs((int)sub[i].size()-space/2); val = i; } } // cout<<val<<endl; if(val == -1)break; if(sub[val].size() ==1 ){ // cout<<"ex"<<endl; int l = 0; int r = sub[cur].size(); int p = 0; while(r-l>1){ int mid = (l+r)/2; vector<int>ask; for(int i = l;i<mid;i++){ if(sub[cur][i] == cur)continue; ask.pb(sub[cur][i]); } ask.pb(cur); // print(ask); int x = query(ask); if(ask.size() == 1){ p = x; } if(x){ r = mid; } else{ l = mid; } } if(p){ return cur; } else{ return sub[cur][l]; } } // print(sub[val]); int x = query(sub[val]); if(x){ cur = val; } else{ for(auto i:sub[val]){ pos[i] = 1; } } sub.clear(); sub.resize(N+1); dfs(cur,pa[cur]); space = sub[cur].size(); } return cur; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...