제출 #172689

#제출 시각아이디문제언어결과실행 시간메모리
172689balbit항공 노선도 (JOI18_airline)C++14
37 / 100
967 ms30552 KiB
#include "Alicelib.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int, int> #define ull unsigned ll #define f first #define s second #define FOR(i,a,b) for (int i=(a); i<(b); ++i) #define REP(i,n) FOR(i,0,n) #define RREP(i,n) for (int i=(n-1); i>=0; --i) #define REP1(i,n) FOR(i,1,n+1) #define ALL(x) x.begin(),x.end() #define SZ(x) (int)x.size() #define SQ(x) (x)*(x) #define MN(a,b) a = min(a,(__typeof__(a))(b)) #define MX(a,b) a = max(a,(__typeof__(a))(b)) #define pb push_back #define SORT_UNIQUE(c) (sort(c.begin(),c.end()), c.resize(distance(c.begin(),unique(c.begin(),c.end())))) #ifdef BALBIT #define IOS() #define bug(...) fprintf(stdout,"#%d (%s) = ",__LINE__,#__VA_ARGS__),_do(__VA_ARGS__),fflush(stdout); template<typename T> void _do(T &&x){cerr<<x<<endl;} template<typename T, typename ...S> void _do(T &&x, S &&...y){cerr<<x<<", ";_do(y...);} #else #define IOS() ios_base::sync_with_stdio(0);cin.tie(0); #define endl '\n' #define bug(...) #endif const int iinf = 1<<29; const ll inf = 1ll<<60; const ll mod = 1e9+7; void GG(){cout<<"-1\n"; exit(0);} ll mpow(ll a, ll n, ll mo = mod){ // a^n % mod ll re=1; while (n>0){ if (n&1) re = re*a %mo; a = a*a %mo; n>>=1; } return re; } ll inv (ll b, ll mo = mod){ if (b==1) return b; return (mo-mo/b) * inv(mo%b) % mo; } const int maxn = 1e5+105; void Alice( int N, int M, int A[], int B[] ){ vector<pii> edges; int marker = N; int dummy = N+1; REP(i,M) { edges.pb({A[i],B[i]}); } REP(i,N) { edges.pb({marker,i}); } edges.pb({marker, dummy}); REP(i,10) { REP(j,N) { if ((j+1)&(1<<i)) { edges.pb({j,dummy+1+i}); // bug(j, dummy+1+i); } } } REP(i,9) edges.pb({dummy+1+i, dummy+1+i+1}); edges.pb({dummy+8, dummy+10}); InitG(N+12, edges.size()); int tmp = 0; for (pii & ed: edges){ // cout<<ed.f<<" -> "<<ed.s<<endl; MakeG(tmp++, ed.f, ed.s); } }
#include "Boblib.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int, int> #define ull unsigned ll #define f first #define s second #define FOR(i,a,b) for (int i=(a); i<(b); ++i) #define REP(i,n) FOR(i,0,n) #define RREP(i,n) for (int i=(n-1); i>=0; --i) #define REP1(i,n) FOR(i,1,n+1) #define ALL(x) x.begin(),x.end() #define SZ(x) (int)x.size() #define SQ(x) (x)*(x) #define MN(a,b) a = min(a,(__typeof__(a))(b)) #define MX(a,b) a = max(a,(__typeof__(a))(b)) #define pb push_back #define SORT_UNIQUE(c) (sort(c.begin(),c.end()), c.resize(distance(c.begin(),unique(c.begin(),c.end())))) #ifdef BALBIT #define IOS() #define bug(...) fprintf(stderr,"#%d (%s) = ",__LINE__,#__VA_ARGS__),_do(__VA_ARGS__); template<typename T> void _do(T &&x){cerr<<x<<endl;} template<typename T, typename ...S> void _do(T &&x, S &&...y){cerr<<x<<", ";_do(y...);} #else #define IOS() ios_base::sync_with_stdio(0);cin.tie(0); #define endl '\n' #define bug(...) #endif const int iinf = 1<<29; const ll inf = 1ll<<60; const ll mod = 1e9+7; const int maxn = 1e3+100; vector<int> g[maxn]; bool node[maxn]; bool spe[maxn]; int odeg[maxn];// Degree for special nodes, to special nodes int id[maxn]; #define debug(x) void ass(bool x) { if (!x) { InitMap(-1,-1); exit(0); } } void Bob( int V, int U, int C[], int D[] ){ int marker = -1; int dummy = -1; // cout<<" ====== Bob time ======= "<<endl; REP(i,U) { // cout<<C[i]<<" - "<<D[i]<<endl; g[C[i]].pb(D[i]); g[D[i]].pb(C[i]); } REP(i,V) { if (SZ(g[i])==1) { ass(dummy == -1); dummy = i; } } debug(dummy); ass(dummy!=-1); marker = g[dummy][0]; for (int x : g[marker]) { if (x!=dummy) node[x] = 1; } vector<int> ten; // The ten special nodes REP(i,V) { if (i!=marker && i!=dummy && !node[i]) spe[i] = 1; } REP(i,V) { if (spe[i]) { for (int u : g[i]) { odeg[i] += spe[u]; } } } int zero = -1; REP(i,V) { if (spe[i]) { if (odeg[i] == 1) zero = i; } } ass(zero!=-1); ten.pb(zero); REP(i,9) { spe[zero] = 0; for (int u : g[zero]) { if (spe[u]) { zero = u; break; } } ten.pb(zero); } // cout<<"Things in ten: "<<endl; // REP(i,10) { // debug(ten[i]); // } if (SZ(ten)!=10) MakeMap(-1,-1); REP(i, SZ(ten)) { for (int u : g[ten[i]]) if (node[u]) id[u] += (1<<i); } REP(i, V) { if (node[i]) id[i]--; } vector<pii> edges; REP(i, V) { if (node[i]) { for (int u: g[i]) { if (node[u]) if (id[i]<id[u]) edges.pb({id[i], id[u]}); } } } bug(SZ(edges)); // cout<<SZ(edges)<<endl; // for (pii & ed: edges){ // cout<<ed.f<<' '<<ed.s<<endl; // } InitMap( V-12, SZ(edges) ); for (pii & ed: edges){ MakeMap(ed.f, ed.s); } } /* 4 3 0 1 0 2 0 3 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...