QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#300779 | #4896. Alice、Bob 与 DFS | zyc070419 | 5 | 22ms | 18096kb | C++14 | 6.0kb | 2024-01-08 19:52:30 | 2024-01-08 19:52:31 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 3;
inline int read() {
char ch = getchar(); int x = 0;
while (!isdigit(ch)) {ch = getchar();}
while (isdigit(ch)) {x = x * 10 + ch - 48; ch = getchar();}
return x;
}
int n, c[N];
vector<int> g[N], vec;
namespace subtask1 {
bool dp[N], ans;
bool check() {
for (int i = 1; i <= n; ++i)
if (c[i] == 1) return false;
return true;
}
void solve() {
for (int x = n; x >= 1; --x) {
dp[x] = 1;
for (auto y : g[x]) dp[x] ^= dp[y];
}
for (auto r : vec) ans ^= dp[r];
puts(ans ? "Alice" : "Bob");
}
}
namespace subtask2 {
int dp[N];
bool check() {return vec.size() == 1;}
void solve() {
for (int x = n; x >= 1; --x) {
if (g[x].empty()) dp[x] = 1;
else {
int val = 1;
for (auto y : g[x]) {
if (val == 0) {
if (dp[y] == 0) val = 0;
else if (dp[y] == 1) val = 1;
else {
val = dp[y];
break;
}
}else {
if (dp[y] == 0) val = 1;
else if (dp[y] == 1) val = 0;
else {
val = dp[y] ^ 1;
break;
}
}
}
if (c[x] == 0) dp[x] = val;
else {
if (val == 3) dp[x] = 1;
else if (val == 0) dp[x] = 2;
else dp[x] = val;
}
}
}
puts((dp[vec[0]] == 1 || dp[vec[0]] == 2) ? "Alice" : "Bob");
}
}
namespace subtask3 {
int cnt, val[N], sg[2000];
vector< pair<int, int> > now;
vector<int> to[2000], tmp;
vector< vector< pair<int, int> > > tot;
bool check() {
int m = 0;
for (int x = 1; x <= n; ++x) m += g[x].size();
return (n <= 10 && m <= 10);
}
void dfs(int x, int lst) {
now.push_back(make_pair(x, lst));
tot.push_back(now);
for (int i = 0; i < g[x].size(); ++i) dfs(g[x][i], i);
now.pop_back();
}
void solve() {
for (int x = 1; x <= n; ++x) {
tot.clear(); dfs(x, 0); tot.push_back(now);
for (int i = 0; i < tot.size(); ++i) to[i].clear();
for (int i = 0; i < tot.size(); ++i) {
if (tot[i].empty()) continue;
for (int j = i + 1; j < tot.size(); ++j) {
if (tot[j].size() <= tot[i].size()) {
if (tot[j].empty()) {
to[i].push_back(j);
continue;
}
bool pd = true;
for (int ID = 0; ID + 1 < tot[j].size(); ++ID)
if (tot[j][ID] != tot[i][ID]) pd = false;
if (!pd) continue;
to[i].push_back(j);
if (c[tot[j][tot[j].size() - 2].first] == 0) break;
}
if (tot[j].size() == tot[i].size() + 1 && tot[j][tot[i].size() - 1] == tot[i].back()) {
to[i].push_back(j);
if (c[tot[i].back().first] == 0) break;
}
}
}
for (int i = tot.size() - 1; i >= 0; --i) {
tmp.clear();
for (auto j : to[i]) tmp.push_back(sg[j]);
sort(tmp.begin(), tmp.end());
tmp.erase(unique(tmp.begin(), tmp.end()), tmp.end());
int ans = 0;
while (ans < tmp.size() && ans == tmp[ans]) ans++;
sg[i] = ans;
}
val[x] = sg[0];
}
int fin = 0;
for (auto x : vec) fin ^= val[x];
puts(fin ? "Alice" : "Bob");
}
}
namespace subtask4 {
int du[N], ans, sg[N];
multiset<int> S, T;
bool check() {
for (int x = 1; x <= n; ++x)
for (auto y : g[x]) du[y]++;
for (int i = 1; i <= n; ++i)
if (du[i] > 1) return false;
for (auto x : vec) if (du[x]) return false;
return true;
}
void ins(int x) {
if (T.find(x) != T.end()) T.erase(T.find(x));
else S.insert(x);
while (S.find(ans) != S.end()) ans++;
}
void del(int x) {
if (S.find(x) != S.end()) S.erase(S.find(x));
else T.insert(x);
}
int work() {
int res;
if (T.empty()) res = ans;
else res = min(ans, *T.begin());
ins(res); return res;
}
void dfs(int x) {
if (g[x].empty()) {
sg[x] = work();
return;
}
for (auto y : g[x]) dfs(y);
sg[x] = work();
for (auto y : g[x]) del(sg[y]);
}
void solve() {
ins(0);
for (int i = 1; i <= n; ++i) reverse(g[i].begin(), g[i].end());
for (int i = 1; i <= n; ++i)
if (du[i] == 0) S.clear(), T.clear(), ans = 0, dfs(i);
int fin = 0;
for (auto x : vec) fin ^= sg[x];
puts(fin ? "Alice" : "Bob");
}
}
int main() {
n = read();
for (int i = 1; i <= n; ++i) c[i] = read();
for (int x = 1, m, y; x <= n; ++x) {
m = read();
while (m--) {
y = read();
g[x].push_back(y);
}
}
int k = read(), x;
while (k--) x = read(), vec.push_back(x);
// subtask4 :: solve(); exit(0);
if (subtask1 :: check()) subtask1 :: solve();
else if (subtask4 :: check()) subtask4 :: solve();
else if (subtask2 :: check()) subtask2 :: solve();
else if (subtask3 :: check()) subtask3 :: solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 5
Accepted
Test #1:
score: 5
Accepted
time: 2ms
memory: 10516kb
input:
1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
Alice
result:
ok "Alice"
Test #2:
score: 0
Accepted
time: 2ms
memory: 11828kb
input:
1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
Bob
result:
ok "Bob"
Test #3:
score: 0
Accepted
time: 2ms
memory: 9784kb
input:
1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
Alice
result:
ok "Alice"
Test #4:
score: 0
Accepted
time: 1ms
memory: 10344kb
input:
10 0 0 0 0 0 0 0 0 0 0 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 0 1 1
output:
Bob
result:
ok "Bob"
Test #5:
score: 0
Accepted
time: 1ms
memory: 12008kb
input:
11 0 0 0 0 0 0 0 0 0 0 0 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 0 0 2 1 11
output:
Alice
result:
ok "Alice"
Test #6:
score: 0
Accepted
time: 13ms
memory: 18096kb
input:
200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
Bob
result:
ok "Bob"
Test #7:
score: 0
Accepted
time: 14ms
memory: 17244kb
input:
200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
Bob
result:
ok "Bob"
Test #8:
score: 0
Accepted
time: 15ms
memory: 17364kb
input:
200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
Alice
result:
ok "Alice"
Test #9:
score: 0
Accepted
time: 17ms
memory: 16972kb
input:
200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
Bob
result:
ok "Bob"
Test #10:
score: 0
Accepted
time: 22ms
memory: 17408kb
input:
200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
Bob
result:
ok "Bob"
Test #11:
score: 0
Accepted
time: 19ms
memory: 16128kb
input:
200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
Bob
result:
ok "Bob"
Test #12:
score: 0
Accepted
time: 22ms
memory: 16208kb
input:
200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
Bob
result:
ok "Bob"
Test #13:
score: 0
Accepted
time: 14ms
memory: 16140kb
input:
200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
Alice
result:
ok "Alice"
Test #14:
score: 0
Accepted
time: 17ms
memory: 15060kb
input:
200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
Bob
result:
ok "Bob"
Test #15:
score: 0
Accepted
time: 2ms
memory: 10956kb
input:
1 0 0 1 1
output:
Alice
result:
ok "Alice"
Test #16:
score: 0
Accepted
time: 2ms
memory: 11808kb
input:
3 0 0 0 1 2 1 3 0 1 1
output:
Alice
result:
ok "Alice"
Test #17:
score: 0
Accepted
time: 0ms
memory: 10728kb
input:
4 0 0 0 0 1 2 1 3 0 0 2 1 4
output:
Bob
result:
ok "Bob"
Subtask #2:
score: 0
Wrong Answer
Test #18:
score: 0
Wrong Answer
time: 1ms
memory: 10432kb
input:
7 0 0 1 1 0 1 1 1 2 2 3 4 0 2 5 6 0 1 7 0 1 1
output:
Alice
result:
wrong answer 1st words differ - expected: 'Bob', found: 'Alice'
Subtask #3:
score: 0
Wrong Answer
Test #55:
score: 0
Wrong Answer
time: 1ms
memory: 11768kb
input:
7 0 0 1 1 0 1 1 1 2 2 3 4 0 2 5 6 0 1 7 0 1 1
output:
Alice
result:
wrong answer 1st words differ - expected: 'Bob', found: 'Alice'
Subtask #4:
score: 0
Wrong Answer
Test #103:
score: 20
Accepted
time: 1ms
memory: 9888kb
input:
10 1 1 1 1 1 1 1 1 1 1 1 2 4 3 5 7 8 1 4 0 1 6 0 0 1 9 1 10 0 1 1
output:
Alice
result:
ok "Alice"
Test #104:
score: 0
Accepted
time: 1ms
memory: 10040kb
input:
10 1 1 1 1 1 1 1 1 1 1 4 2 3 4 10 0 0 1 5 1 6 2 7 8 0 1 9 0 0 1 1
output:
Alice
result:
ok "Alice"
Test #105:
score: 0
Accepted
time: 1ms
memory: 10768kb
input:
10 1 1 1 1 1 1 1 1 1 1 2 2 7 1 3 2 4 6 1 5 0 0 0 1 9 0 0 10 8 10 10 8 10 8 10 10 1 8
output:
Alice
result:
ok "Alice"
Test #106:
score: 0
Accepted
time: 1ms
memory: 9840kb
input:
10 1 1 1 1 1 1 1 1 1 1 2 2 3 0 0 1 5 0 2 7 9 1 8 0 0 0 10 6 6 4 1 1 4 10 10 10 6
output:
Alice
result:
ok "Alice"
Test #107:
score: 0
Accepted
time: 0ms
memory: 10368kb
input:
10 1 1 1 1 1 1 1 1 1 1 1 2 0 2 4 5 0 1 6 0 0 0 0 0 10 10 10 1 9 8 9 10 7 7 3
output:
Alice
result:
ok "Alice"
Test #108:
score: 0
Accepted
time: 0ms
memory: 9948kb
input:
10 1 1 1 1 1 1 1 1 1 1 1 2 1 3 1 4 1 5 2 6 7 0 2 8 9 0 1 10 0 10 1 1 1 1 1 1 1 1 1 1
output:
Bob
result:
ok "Bob"
Test #109:
score: 0
Accepted
time: 1ms
memory: 11736kb
input:
10 1 1 1 1 1 1 1 1 1 1 1 2 0 1 4 0 1 6 0 0 0 0 0 10 10 9 1 10 8 1 3 7 9 5
output:
Bob
result:
ok "Bob"
Test #110:
score: 0
Accepted
time: 0ms
memory: 10004kb
input:
10 1 1 1 1 1 1 1 1 1 1 2 2 3 0 2 4 6 1 5 0 1 7 0 0 0 0 10 10 9 1 8 1 10 10 9 1 1
output:
Bob
result:
ok "Bob"
Test #111:
score: 0
Accepted
time: 1ms
memory: 11736kb
input:
100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 3 2 4 38 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 4 14 35 36 37 1 15 1 16 1 17 1 18 2 19 31...
output:
Alice
result:
ok "Alice"
Test #112:
score: -20
Wrong Answer
time: 1ms
memory: 11972kb
input:
100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 0 2 4 29 1 5 3 6 7 8 0 0 1 9 1 10 5 11 20 21 27 28 5 12 13 16 18 19 0 2 14 15 0 0 1 17 0 0 0...
output:
Alice
result:
wrong answer 1st words differ - expected: 'Bob', found: 'Alice'
Subtask #5:
score: 0
Skipped
Dependency #4:
0%
Subtask #6:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%