제출 #933474

#제출 시각아이디문제언어결과실행 시간메모리
933474parlimoosAmusement Park (JOI17_amusement_park)C++14
28 / 100
20 ms4696 KiB
//Be Name KHODA #pragma GCC optimize("Ofast") #include "Joi.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define pb push_back #define pp pop_back #define lb lower_bound #define ub upper_bound #define cl clear #define bg begin #define arr(x) array<int , x> #define endl '\n' int n1 , m1; vector<int> tr1[10000]; int tms1[10000][2] , ps1[10000]; bool ms1[10000]; int timer1 = -1; void dfs0(int v1 = 0 , int p1 = -1){ tms1[v1][0] = ++timer1; ps1[v1] = p1 , ms1[v1] = 1; for(int u1 : tr1[v1]) if(!ms1[u1]) dfs0(u1 , v1); tms1[v1][1] = timer1; } void Joi(int N , int M , int A[] , int B[] , ll X , int T){ n1 = N , m1 = M; for(int i = 0 ; i < m1 ; i++) tr1[A[i]].pb(B[i]) , tr1[B[i]].pb(A[i]); dfs0(); for(int i = 0 ; i < n1 ; i++){ MessageBoard(i , int((X >> (tms1[i][0] % 60)) & 1ll)); } }
//Be Name KHODA #pragma GCC optimize("Ofast") #include<bits/stdc++.h> #include "Ioi.h" using namespace std; typedef long long ll; typedef long double ld; #define pb push_back #define pp pop_back #define lb lower_bound #define ub upper_bound #define cl clear #define bg begin #define arr(x) array<int , x> #define endl '\n' int n , m; vector<int> tr[10000]; int tms[10000][2] , ps[10000]; bool ms[10000]; bool is[60]; vector<int> tour; ll o; int cur; int timer = -1; void dfs1(int v = 0 , int p = -1){ tms[v][0] = ++timer , tour.pb(v); ps[v] = p , ms[v] = 1; for(int u : tr[v]) if(!ms[u]) dfs1(u , v) , tour.pb(v); tms[v][1] = timer; } void dfs2(int v){ ms[v] = 1; for(int u : tr[v]){ if(!ms[u] and u != ps[v] and tms[u][0] < 60){ ll d = (1ll * Move(u)); o |= (d << (tms[u][0] % 60)); dfs2(u); d = Move(v); } } } ll Ioi(int N , int M , int A[] , int B[] , int P , int V , int T){ n = N , m = M , cur = P; for(int i = 0 ; i < m ; i++) tr[A[i]].pb(B[i]) , tr[B[i]].pb(A[i]); dfs1(); o = ((1ll * V) << (tms[P][0] % 60)); is[tms[P][0] % 60] = 1; if(tms[P][0] >= 59){ int i = 0; for(; i < (int)tour.size() ; i++) if(tour[i] == P) break; while(true){ ll d = Move(tour[i - 1]); o |= (d << (tms[tour[i - 1]][0] % 60)); i--; is[tms[tour[i]][0] % 60] = 1; bool flg = 1; for(int j = 0 ; j < 60 ; j++) if(!is[j]) flg = 0; if(flg) break; } return o; }else{ fill(&ms[0] , &ms[n] , 0); while(true){ dfs2(P); if(ps[P] == -1) break; ll d = Move(ps[P]); P = ps[P]; o |= (d << (tms[P][0] % 60)); } return o; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...