Submission #35203807
Source Code Expand
#include <cassert>
#include <iostream>
#include <vector>
struct graph : std::vector<std::vector<int>> {
using std::vector<std::vector<int>>::vector;
void add_edge(int u, int v, bool directed = false) {
(*this)[u].emplace_back(v);
if (directed) return;
(*this)[v].emplace_back(u);
}
};
int main() {
int n;
std::cin >> n;
graph g(n);
std::vector<int> a(n);
for (auto &val : a) std::cin >> val;
for (int i = 0; i < n - 1; i++) {
int u, v;
std::cin >> u >> v;
u--;
v--;
g.add_edge(u, v);
}
std::vector dp(n, std::vector<int>(2, 0));
auto dfs = [&](auto &&self, int v, int par = -1) -> void {
if (par != -1 && g[v].size() == 1) {
dp[v][1 ^ a[v]] = 1;
return;
}
bool flag = false;
for (auto nv : g[v]) {
if (nv == par) continue;
self(self, nv, v);
auto nxt = dp[v];
if (!flag) {
dp[v] = dp[nv];
flag = true;
continue;
}
nxt[0] = std::max(dp[v][0] + dp[nv][0], dp[v][1] + dp[nv][1]);
nxt[1] = std::max(dp[v][0] + dp[nv][1], dp[v][1] + dp[nv][0]);
dp[v] = nxt;
}
dp[v][1 ^ a[v]]++;
return;
};
dfs(dfs, 0);
std::cout << std::max(dp[0][0], dp[0][1]) << '\n';
}
Submission Info
| Submission Time | |
|---|---|
| Task | D - XOR Tree Path |
| User | ebi_fly |
| Language | C++ (GCC 9.2.1) |
| Score | 200 |
| Code Size | 1451 Byte |
| Status | AC |
| Exec Time | 105 ms |
| Memory | 28508 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 200 / 200 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample-01.txt, sample-02.txt, sample-03.txt |
| All | large-01.txt, large-02.txt, large-03.txt, large-04.txt, large-05.txt, max-01.txt, max-02.txt, max-03.txt, min-01.txt, min-02.txt, min-03.txt, path-01.txt, path-02.txt, path-max-01.txt, sample-01.txt, sample-02.txt, sample-03.txt, small-01.txt, small-02.txt, small-03.txt, small-04.txt, small-05.txt, uni-01.txt, uni-02.txt, uni-max-01.txt, very-small-01.txt, very-small-02.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| large-01.txt | AC | 70 ms | 11608 KiB |
| large-02.txt | AC | 9 ms | 3988 KiB |
| large-03.txt | AC | 57 ms | 9360 KiB |
| large-04.txt | AC | 58 ms | 9956 KiB |
| large-05.txt | AC | 48 ms | 8580 KiB |
| max-01.txt | AC | 93 ms | 14616 KiB |
| max-02.txt | AC | 90 ms | 14432 KiB |
| max-03.txt | AC | 91 ms | 14524 KiB |
| min-01.txt | AC | 2 ms | 3560 KiB |
| min-02.txt | AC | 2 ms | 3604 KiB |
| min-03.txt | AC | 2 ms | 3580 KiB |
| path-01.txt | AC | 39 ms | 10836 KiB |
| path-02.txt | AC | 71 ms | 19128 KiB |
| path-max-01.txt | AC | 105 ms | 28508 KiB |
| sample-01.txt | AC | 2 ms | 3624 KiB |
| sample-02.txt | AC | 7 ms | 3484 KiB |
| sample-03.txt | AC | 3 ms | 3584 KiB |
| small-01.txt | AC | 4 ms | 3684 KiB |
| small-02.txt | AC | 3 ms | 3684 KiB |
| small-03.txt | AC | 2 ms | 3492 KiB |
| small-04.txt | AC | 4 ms | 3560 KiB |
| small-05.txt | AC | 3 ms | 3692 KiB |
| uni-01.txt | AC | 28 ms | 6612 KiB |
| uni-02.txt | AC | 35 ms | 8256 KiB |
| uni-max-01.txt | AC | 68 ms | 14948 KiB |
| very-small-01.txt | AC | 2 ms | 3564 KiB |
| very-small-02.txt | AC | 2 ms | 3616 KiB |