이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "Joi.h"
using namespace std;
using ll = long long;
void Joi(int N, int M, int A[], int B[], long long X, int T) {
bool bio[N];
memset(bio, 0, sizeof bio);
int p = 0;
vector<vector<int>> adj(N);
for (int i = 0; i < M; ++i) {
adj[A[i]].push_back(B[i]);
adj[B[i]].push_back(A[i]);
}
for (auto &v: adj) sort(begin(v), end(v));
function<void(int)> dfs = [&](int ver) {
bio[ver] = true;
MessageBoard(ver, (X >> p++) & 1);
p %= 60;
for (auto u: adj[ver]) if (!bio[u]) {
dfs(u);
}
};
dfs(0);
}
#include <bits/stdc++.h>
#include "Ioi.h"
using namespace std;
long long Ioi(int N, int M, int A[], int B[], int P, int V, int T) {
int limit = 20000;
if (T == 5) limit = 120;
else if (T == 4) limit = 960;
else if (T == 3) limit = 250;
vector<vector<int>> adj(N);
for (int i = 0; i < M; ++i) {
adj[A[i]].push_back(B[i]);
adj[B[i]].push_back(A[i]);
}
for (auto &v: adj) sort(begin(v), end(v));
int col[N];
bool bio[N];
memset(bio, 0, sizeof bio);
int p = 0;
function<void(int)> dfsfind = [&](int ver) {
bio[ver] = true;
col[ver] = p++;
p %= 60;
for (auto u: adj[ver]) if (!bio[u]) {
dfsfind(u);
}
};
dfsfind(0);
memset(bio, 0, sizeof bio);
long long ans = (1ll * V) << col[P];
int cnt = 0;
function<void(int, int)> dfs = [&](int ver, int par) {
if (cnt >= limit) return;
bio[ver] = true;
for (auto u: adj[ver]) if (!bio[u]) {
if (cnt >= limit) return;
++cnt;
long long v = Move(u);
ans |= v << col[u];
dfs(u, ver);
}
if (cnt >= limit) return;
if (par != -1) {
++cnt;
Move(par);
}
};
dfs(P, -1);
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |