Submission #702603

#TimeUsernameProblemLanguageResultExecution timeMemory
702603victor_gaoMeetings (JOI19_meetings)C++17
29 / 100
2799 ms2496 KiB
#include<bits/stdc++.h> #include "meetings.h" #define pii pair<int,int> #define x first #define y second using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); set<pii>ans; void DC(deque<int>have,int par){ int n=have.size(); int root=have[rng()%n]; vector<deque<int> >all(20); /* cout<<"solve : "; for (auto i:have) cout<<i<<" "; cout<<'\n'; cout<<"root is "<<root<<'\n'; */ for (auto i:have){ if (i==root) continue; for (int j=0;j<19;j++){ if (all[j].empty()){ all[j].push_back(i); break; } else { int w=Query(all[j][0],root,i); if (w==root) continue; if (w==i) all[j].push_front(i); else all[j].push_back(i); break; } } } /* for (int i=0;i<19;i++){ if (!all[i].empty()){ cout<<"son "<<i<<" : "; for (auto j:all[i]) cout<<j<<" "; cout<<'\n'; } } */ for (int i=0;i<19;i++){ if (!all[i].empty()){ int a=all[i][0],b=root; ans.insert({min(a,b),max(a,b)}); DC(all[i],root); } } } void Solve(int N){ deque<int>dq; for (int i=0;i<N;i++) dq.push_back(i); DC(dq,0); for (auto i:ans){ // cout<<i.x<<" "<<i.y<<'\n'; Bridge(i.x,i.y); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...