# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
41786 | RockyB | Amusement Park (JOI17_amusement_park) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
/// In The Name Of God
#include <bits/stdc++.h>
#include "Joi.h"
#define ioi exit(0);
using namespace std;
class Solve1 {
static const int N = 2e5 + 7;
int n, m, T;
long long x;
int *a, *b;
int cnt;
vector <int> g[N];
bool was[N];
public:
Solve1() {}
Solve1(int n, int m, int a[], int b[], long long x, int T) :
n(n), m(m), a(a), b(b), x(x), T(T) {}
void dfs(int v = 0) {
was[v] = 1;
int t = cnt <= 59 ? ((x & (1LL << cnt)) > 0) : 0;
MessageBoard(v, t);
++cnt;
for (auto to : g[v]) {
if (!was[to]) {
dfs(to);
}
}
}
void solve() {
for (int i = 0; i < m; i++) {
g[a[i]].push_back(b[i]);
g[b[i]].push_back(a[i]);
}
dfs();
}
} S1;
void Joi(int n, int m, int a[], int b[], long long x, int T) {
S1 = Solve1(n, m, a, b, x, T);
S1.solve();
}
int main() {
S1.solve();
ioi
}
/*int32_t main() {
return 0;
}*/
/*#ifdef IOI2018
int main() {
freopen ("in.txt", "r", stdin);
ioi
}
#endif
*/
/// In The Name Of God
#include <bits/stdc++.h>
#include "Ioi.h"
#define ioi exit(0);
using namespace std;
class Solve2 {
static const int N = 2e5 + 7;
int n, m, p, v, T;
int *a, *b;
vector <int> g[N];
bool was[N];
long long res;
public:
Solve2() {}
Solve2(int n, int m, int a[], int b[], int p, int v, int T) :
n(n), m(m), a(a), b(b), p(p), v(v), T(T) {}
map <int, int> dp;
int ask(int p) {
if (dp.count(p)) return dp[p];
return dp[p] = Move(p);
}
void dfs(int v) {
was[v] = 1;
if (was[0]) return;
for (auto to : g[v]) {
if (was[to]) continue;
dp[to] = Move(to);
dfs(to);
if (was[0]) return;
dp[v] = Move(v);
}
}
int cnt;
void dfs1(int v = 0) {
was[v] = 1;
if (cnt <= 59) {
res += (1LL << cnt) * ask(v);
}
else return;
cnt++;
for (auto to : g[v]) {
if (was[to]) continue;
dp[to] = Move(to);
dfs1(to);
dp[v] = Move(v);
}
}
long long solve() {
for (int i = 0; i < m; i++) {
g[a[i]].push_back(b[i]);
g[b[i]].push_back(a[i]);
}
dp[p] = v;
dfs(p);
memset(was, 0, sizeof(was));
dfs1();
return res;
}
} S2;
long long Ioi(int n, int m, int a[], int b[], int p, int v, int t) {
S2 = Solve2(n, m, a, b, p, v, t);
return S2.solve();
}
/*#ifdef IOI2018
int main() {
freopen ("in.txt", "r", stdin);
ioi
}
#endif*/