제출 #1221443

#제출 시각아이디문제언어결과실행 시간메모리
1221443emptypringlescan항공 노선도 (JOI18_airline)C++17
100 / 100
166 ms23156 KiB
#include "Alicelib.h" #include <bits/stdc++.h> using namespace std; void Alice( int n, int m, int A[], int B[] ){ vector<pair<int,int> > ed; for(int i=0; i<m; i++){ ed.push_back({A[i],B[i]}); } for(int i=0; i<n; i++){ for(int j=0; j<10; j++){ if(i&(1<<j)){ ed.push_back({i,n+j}); } } } for(int i=n; i<n+9; i++) ed.push_back({i,i+1}); for(int i=0; i<n+10; i++) ed.push_back({i,n+10}); for(int i=n; i<n+10; i++) ed.push_back({i,n+11}); InitG(n+12,(int)ed.size()); for(int i=0; i<(int)ed.size(); i++){ //cout << ed[i].first << ' ' << ed[i].second << '\n'; MakeG(i,ed[i].first,ed[i].second); } }
#include "Boblib.h" #include <bits/stdc++.h> using namespace std; void Bob( int v, int u, int C[], int D[] ){ int n=v-12; if(n==1){ InitMap(1,0); return; } int deg[v]; memset(deg,0,sizeof(deg)); vector<int> adj[v]; for(int i=0; i<u; i++){ deg[C[i]]++; deg[D[i]]++; adj[C[i]].push_back(D[i]); adj[D[i]].push_back(C[i]); } pair<int,int> mx={-1,-1}; for(int i=0; i<v; i++){ mx=max(mx,{deg[i],i}); } assert(mx.first==n+10); int is[v]; memset(is,0,sizeof(is)); is[mx.second]=1; int hm=mx.second; for(int i:adj[mx.second]) is[i]=1; int bn=-1; for(int i=0; i<v; i++) if(!is[i]) bn=i; assert(deg[bn]==10); int isb[v]; memset(isb,0,sizeof(isb)); mx={1e9,-1}; for(int i:adj[bn]){ isb[i]=1; mx=min(mx,{deg[i],i}); } vector<int> bts; int cur=mx.second; for(int i=0; i<10; i++){ bts.push_back(cur); isb[cur]=0; for(int j:adj[cur]){ if(isb[j]){ cur=j; break; } } } assert((int)bts.size()==10); reverse(bts.begin(),bts.end()); for(int i=0; i<v; i++) isb[i]=-1; int cnt=0; for(int i:bts){ is[i]=0,isb[i]=cnt; cnt++; } is[hm]=0; int ind[v]; memset(ind,-1,sizeof(ind)); cnt=0; for(int i=0; i<v; i++){ if(!is[i]) continue; cnt++; ind[i]=0; for(int j:adj[i]){ if(isb[j]==-1) continue; ind[i]^=(1<<isb[j]); } } assert(cnt==n); vector<pair<int,int> > ed; for(int i=0; i<u; i++){ if(is[C[i]]&&is[D[i]]){ ed.push_back({ind[C[i]],ind[D[i]]}); } } InitMap(n,(int)ed.size()); for(auto i:ed) MakeMap(i.first,i.second); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...