Submission #954413

#TimeUsernameProblemLanguageResultExecution timeMemory
954413logangdAirline Route Map (JOI18_airline)C++14
91 / 100
513 ms30920 KiB
#include "Alicelib.h" #include <bits/stdc++.h> using namespace std; void Alice( int N, int M, int A[], int B[] ){ int v[10]; for(int i=0;i<10;i++){ v[i]=0; for(int j=1;j<=N;j++){ v[i]+=((j>>i)&1); } } int g=N+11; for(int i=0;i<10;i++)g+=v[i]; InitG(N+13,M+g); int c; for(c=0;c<M;c++)MakeG(c,A[c],B[c]); for(int i=0;i<N;i++,c++)MakeG(c,N,i); for(int i=N+1;i<N+11;i++,c++)MakeG(c,i,i+1); for(int i=0;i<10;i++){ for(int j=1;j<=N;j++){ if((j>>i)&1)MakeG(c,j-1,N+1+i),c++; } } MakeG(c,N,N+12); }
#include "Boblib.h" #include <bits/stdc++.h> using namespace std; void Bob( int V, int U, int C[], int D[] ){ int bt[10],deg[V],val[V],usa[V]; vector<int>ad[V],v(V); V-=13; for(int i=0;i<10;i++){ bt[i]=0; for(int j=1;j<=V;j++){ bt[i]+=((j>>i)&1); } } int g=V+11; for(int i=0;i<10;i++)g+=bt[i]; InitMap(V,U-g); for(int i=0;i<V+13;i++)deg[i]=val[i]=usa[i]=0; for(int i=0;i<U;i++){ deg[C[i]]++; deg[D[i]]++; ad[C[i]].push_back(D[i]); ad[D[i]].push_back(C[i]); } queue<int>q; int a=-1,b=-1; for(int i=0;i<V+13;i++) if(deg[i]==1){ if(a==-1)a=i; else b=i; } if(deg[ad[a][0]]==V+1)a=ad[a][0]; else b=ad[b][0],swap(a,b); for(auto i:ad[a])v[i]=1; v[b]=1; for(int i=9;0<=i;i--){ for(auto j:ad[b])if(v[j]==0){ b=j; v[b]=1; break; } for(auto j:ad[b])val[j]+=(1<<i); } for(auto i:ad[a])if(deg[i]!=1)usa[i]=1; for(int i=0;i<U;i++){ if(usa[C[i]]&&usa[D[i]])MakeMap(val[C[i]]-1,val[D[i]]-1); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...