Submission #34811094
Source Code Expand
#include <bits/stdc++.h>
using i64 = long long;
const int N = 1e5 + 5;
int n;
std::vector<int> g[N];
int a[N];
i64 up[N];
bool flag;
int root;
void dfs(int u, int fa) {
if ((int)g[u].size() == 1) {
up[u] = a[u];
return;
}
i64 sum = 0, mx = 0;
for (auto v : g[u]) {
if (v != fa) {
dfs(v, u);
sum += up[v];
mx = std::max(mx, up[v]);
std::cerr << "debug: " << u << ' ' << v << ' ' << up[v] << '\n';
}
}
i64 x = sum - a[u];
i64 y = 2 * a[u] - sum;
if (u == root) {
std::cerr << "dbg:" << x << ' ' << y << ' ' << mx << ' ' << a[u] << '\n';
}
if (x < 0 || y < 0 || mx > a[u]) {
flag = 0;
}
up[u] = y;
std::cerr << "node : " << u << ' ' << y << '\n';
if (u == root && y != 0) {
flag = 0;
}
}
int main() {
memset(up, 0, sizeof up);
std::cin >> n;
for (int i = 1; i <= n; i++) {
std::cin >> a[i];
}
for (int i = 1; i < n; i++) {
int u, v;
std::cin >> u >> v;
g[u].push_back(v);
g[v].push_back(u);
}
if (n == 2) {
std::cout << (a[1] == a[2] ? "YES" : "NO") << '\n';
return 0;
}
flag = 1;
for (int i = 1; i <= n; i++) {
if ((int)g[i].size() > 1) {
root = i;
break;
}
}
dfs(root, 0);
std::cout << (flag ? "YES" : "NO") << '\n';
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | C - Cleaning |
| User | ayersz |
| Language | C++ (GCC 9.2.1) |
| Score | 700 |
| Code Size | 1508 Byte |
| Status | AC |
| Exec Time | 1840 ms |
| Memory | 21360 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 700 / 700 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample1.txt, sample2.txt, sample3.txt |
| All | sample1.txt, sample2.txt, sample3.txt, in1.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in2.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in3.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in4.txt, in40.txt, in41.txt, in42.txt, in43.txt, in44.txt, in45.txt, in5.txt, in6.txt, in7.txt, in8.txt, in9.txt, sample1.txt, sample2.txt, sample3.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| in1.txt | AC | 1465 ms | 10548 KiB |
| in10.txt | AC | 1460 ms | 10544 KiB |
| in11.txt | AC | 1838 ms | 20764 KiB |
| in12.txt | AC | 1840 ms | 20944 KiB |
| in13.txt | AC | 1821 ms | 21360 KiB |
| in14.txt | AC | 1816 ms | 19908 KiB |
| in15.txt | AC | 8 ms | 6640 KiB |
| in16.txt | AC | 5 ms | 6696 KiB |
| in17.txt | AC | 7 ms | 6640 KiB |
| in18.txt | AC | 6 ms | 6700 KiB |
| in19.txt | AC | 1474 ms | 10572 KiB |
| in2.txt | AC | 1466 ms | 10656 KiB |
| in20.txt | AC | 1473 ms | 10672 KiB |
| in21.txt | AC | 1467 ms | 10572 KiB |
| in22.txt | AC | 1466 ms | 10608 KiB |
| in23.txt | AC | 1466 ms | 10628 KiB |
| in24.txt | AC | 1469 ms | 10656 KiB |
| in25.txt | AC | 5 ms | 6556 KiB |
| in26.txt | AC | 1478 ms | 11224 KiB |
| in27.txt | AC | 1479 ms | 11320 KiB |
| in28.txt | AC | 6 ms | 6644 KiB |
| in29.txt | AC | 1484 ms | 10160 KiB |
| in3.txt | AC | 1468 ms | 10560 KiB |
| in30.txt | AC | 6 ms | 6636 KiB |
| in31.txt | AC | 1476 ms | 10632 KiB |
| in32.txt | AC | 1471 ms | 10568 KiB |
| in33.txt | AC | 1465 ms | 10532 KiB |
| in34.txt | AC | 1466 ms | 10592 KiB |
| in35.txt | AC | 1459 ms | 10648 KiB |
| in36.txt | AC | 1470 ms | 10560 KiB |
| in37.txt | AC | 28 ms | 6580 KiB |
| in38.txt | AC | 1474 ms | 10532 KiB |
| in39.txt | AC | 1472 ms | 10584 KiB |
| in4.txt | AC | 1464 ms | 10620 KiB |
| in40.txt | AC | 1467 ms | 10556 KiB |
| in41.txt | AC | 1468 ms | 10632 KiB |
| in42.txt | AC | 1474 ms | 10540 KiB |
| in43.txt | AC | 1467 ms | 10568 KiB |
| in44.txt | AC | 1467 ms | 10636 KiB |
| in45.txt | AC | 1463 ms | 10620 KiB |
| in5.txt | AC | 1466 ms | 10568 KiB |
| in6.txt | AC | 1468 ms | 10652 KiB |
| in7.txt | AC | 1312 ms | 9952 KiB |
| in8.txt | AC | 357 ms | 7496 KiB |
| in9.txt | AC | 1464 ms | 10564 KiB |
| sample1.txt | AC | 6 ms | 6484 KiB |
| sample2.txt | AC | 12 ms | 6504 KiB |
| sample3.txt | AC | 6 ms | 6700 KiB |