Submission #289031

#TimeUsernameProblemLanguageResultExecution timeMemory
289031KastandaAmusement Park (JOI17_amusement_park)C++14
10 / 100
57 ms6416 KiB
// M #include<bits/stdc++.h> #include "Joi.h" using namespace std; static const int N = 10004, LG = 60; static int n, ts, M[N], C[N]; static vector < int > Adj[N]; static void DFS(int v) { M[v] = 1; for (int u : Adj[v]) if (!M[u]) DFS(u); C[v] = ts; ts ++; ts %= LG; } void Joi(int _n, int m, int A[], int B[], long long X, int T) { n = _n; for (int i = 0; i < m; i ++) Adj[A[i]].push_back(B[i]), Adj[B[i]].push_back(A[i]); for (int i = 0; i < n; i ++) sort(Adj[i].begin(), Adj[i].end()); DFS(0); for (int i = 0; i < n; i ++) MessageBoard(i, (X >> C[i]) & 1LL); }
// M #include<bits/stdc++.h> #include "Ioi.h" using namespace std; static const int N = 10004, LG = 60; static int n, ts, M[N], C[N], F[LG]; static vector < int > Adj[N]; static int now; static set < pair < int , int > > ST; static void DFS(int v) { M[v] = 1; for (int u : Adj[v]) if (!M[u]) DFS(u); C[v] = ts; ts ++; ts %= LG; } static int MOVE(int v) { assert(now != v); assert(ST.count({now, v})); now = v; return Move(v); } static void Solve(int v, int mrk) { F[C[v]] = mrk; for (int u : Adj[v]) if (F[C[u]] == -1) Solve(u, MOVE(u)), MOVE(v); } long long Ioi(int _n, int m, int A[], int B[], int P, int V, int T) { n = _n; for (int i = 0; i < m; i ++) Adj[A[i]].push_back(B[i]), Adj[B[i]].push_back(A[i]); for (int i = 0; i < m; i ++) ST.insert({A[i], B[i]}), ST.insert({B[i], A[i]}); now = P; for (int i = 0; i < n; i ++) sort(Adj[i].begin(), Adj[i].end()); DFS(0); memset(F, -1, sizeof(F)); Solve(P, V); long long X = 0; for (int i = 0; i < LG; i ++) if (F[i]) X |= 1LL << i; return X; }
#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...