제출 #366686

#제출 시각아이디문제언어결과실행 시간메모리
366686Mamnoon_SiamAmusement Park (JOI17_amusement_park)C++17
0 / 100
56 ms20928 KiB
#include "Joi.h" #include <bits/stdc++.h> using namespace std; /* sorry, this is the bare minimum :'( */ using ll = long long; using ii = pair<int, int>; using vi = vector<int>; #define all(v) begin(v), end(v) #define sz(v) (int)(v).size() #define fi first #define se second const int N = 1e5 + 5; namespace { vi t[N], g[N]; int vis[N]; int idx[N], done[N]; vi sub[N]; int cnt = 0; void dfs0(int u) { vis[u] = 1; for(int v : g[u]) if(!vis[v]) { t[u].emplace_back(v); t[v].emplace_back(u); dfs0(v); } } void trace_subtree(int u, vi& subtree) { vis[u] = 1; cnt++; subtree.emplace_back(u); for(int v : t[u]) if(!vis[v] and cnt < 60) { trace_subtree(v, subtree); } } } void Joi(int n, int m, int A[], int B[], long long X, int T) { for(int i = 0; i < m; ++i) { g[A[i]].emplace_back(B[i]); g[B[i]].emplace_back(A[i]); } memset(idx, -1, sizeof idx); dfs0(0); memset(vis, 0, sizeof vis); // for(int x : t[0]) cout << x << ' '; cout << endl; for(int i = 0; i < n; ++i) if(!~idx[i]) { // cout << "i = " << i << endl; vi subtree; trace_subtree(i, subtree); for(int u : subtree) vis[u] = 0; for(int u : subtree) { if(~idx[u]) vis[idx[u]] = 1; } vi unused; for(int i = 0; i < 60; ++i) { if(!vis[i]) unused.emplace_back(i); } // for(int x : unused) cout << x << ' '; cout << endl; for(int u : subtree) { if(~idx[u]) vis[idx[u]] = 0; } for(int u : subtree) { if(!~idx[u]) { idx[u] = unused.back(); unused.pop_back(); sub[u] = subtree; } } } for(int i = 0; i < n; ++i) { // cout << i << ' ' << idx[i] << endl; MessageBoard(i, X >> idx[i] & 1); } }
#include "Ioi.h" #include <bits/stdc++.h> using namespace std; /* sorry, this is the bare minimum :'( */ using ll = long long; using ii = pair<int, int>; using vi = vector<int>; #define all(v) begin(v), end(v) #define sz(v) (int)(v).size() #define fi first #define se second const int N = 1e5 + 5; namespace { vi t[N], g[N]; int vis[N]; int idx[N], done[N]; vi sub[N]; int cnt = 0; void dfs0(int u) { vis[u] = 1; for(int v : g[u]) if(!vis[v]) { t[u].emplace_back(v); t[v].emplace_back(u); dfs0(v); } } void trace_subtree(int u, vi& subtree) { vis[u] = 1; cnt++; subtree.emplace_back(u); for(int v : t[u]) if(!vis[v] and cnt < 60) { trace_subtree(v, subtree); } } void euler_tour(int u, vi& tour, vi& subtree) { tour.emplace_back(u); vis[u] = 1; for(int v : t[u]) if(!vis[v] and count(all(subtree), v)) { euler_tour(v, tour, subtree); tour.emplace_back(u); } } } long long Ioi(int n, int m, int A[], int B[], int P, int V, int T) { for(int i = 0; i < m; ++i) { g[A[i]].emplace_back(B[i]); g[B[i]].emplace_back(A[i]); } memset(idx, -1, sizeof idx); dfs0(0); memset(vis, 0, sizeof vis); // for(int x : t[0]) cout << x << ' '; cout << endl; for(int i = 0; i < n; ++i) if(!~idx[i]) { // cout << "i = " << i << endl; vi subtree; trace_subtree(i, subtree); for(int u : subtree) vis[u] = 0; for(int u : subtree) { if(~idx[u]) vis[idx[u]] = 1; } vi unused; for(int i = 0; i < 60; ++i) { if(!vis[i]) unused.emplace_back(i); } // for(int x : unused) cout << x << ' '; cout << endl; for(int u : subtree) { if(~idx[u]) vis[idx[u]] = 0; } for(int u : subtree) { if(!~idx[u]) { idx[u] = unused.back(); unused.pop_back(); sub[u] = subtree; } } } vi tour; // cout << "tour = "; for(int x : tour) cout << x << ' '; cout << endl; euler_tour(P, tour, sub[P]); tour.erase(tour.begin()); ll ret = ll(V) << idx[P]; for(int u : tour) { ret |= ll(Move(u)) << idx[u]; } return ret; }

컴파일 시 표준 에러 (stderr) 메시지

Joi.cpp:19:15: warning: '{anonymous}::done' defined but not used [-Wunused-variable]
   19 |   int idx[N], done[N];
      |               ^~~~

Ioi.cpp:19:15: warning: '{anonymous}::done' defined but not used [-Wunused-variable]
   19 |   int idx[N], done[N];
      |               ^~~~
#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...