Submission #1189254

#TimeUsernameProblemLanguageResultExecution timeMemory
118925412345678항공 노선도 (JOI18_airline)C++20
100 / 100
178 ms25988 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>> edg; for (int i=0; i<M; i++) edg.push_back({A[i], B[i]}); for (int i=0; i<10; i++) { for (int j=0; j<N; j++) if (j&(1<<i)) edg.push_back({N+i, j}); if (i!=9) edg.push_back({N+i, N+i+1}); } for (int i=0; i<N; i++) edg.push_back({N+10, i}); edg.push_back({N+10, N+11}); InitG(N+12, edg.size()); int cnt=0; for (auto [u, v]:edg) MakeG(cnt++, u, v); }
#include "Boblib.h" #include <bits/stdc++.h> using namespace std; const int nx=1020; int adj[nx][nx], sp, bit[nx], cur=-1, code[nx], vs[nx]; vector<int> d[nx]; void Bob( int V, int U, int C[], int D[]){ //cout<<"debug "<<U<<' '<<V<<'\n'; for (int i=0; i<U; i++) adj[C[i]][D[i]]=adj[D[i]][C[i]]=1, d[D[i]].push_back(C[i]), d[C[i]].push_back(D[i]); for (int i=0; i<V; i++) if (d[i].size()==1&&d[d[i][0]].size()==V-11) sp=d[i][0], bit[i]=bit[sp]=vs[i]=vs[sp]=1; //cout<<"sp "<<sp<<'\n'; cur=sp; for (int i=0; i<V; i++) { if (i!=sp&&!adj[sp][i]) { //cout<<"here "<<i<<'\n'; bit[i]=1; if (d[i].size()<d[cur].size()) cur=i; } } vs[cur]=1; for (int i=9; i>=0; i--) { //cout<<"c "<<cur<<' '<<d[cur].size()<<'\n'; for (auto v:d[cur]) code[v]|=(1<<i); for (auto v:d[cur]) { //cout<<"v "<<v<<' '<<vs[v]<<'\n'; if (bit[v]&&!vs[v]) vs[v]=1, cur=v; } } vector<pair<int, int>> edg; for (int i=0; i<U; i++) if (!bit[C[i]]&&!bit[D[i]]) edg.push_back({code[C[i]], code[D[i]]}); //cout<<V-12<<' '<<edg.size()<<'\n'; InitMap(V-12, edg.size()); for (auto [u, v]:edg) MakeMap(u, v); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...