/**
* code generated by JHelper
* More info: https://github.com/AlexeyDmitriev/JHelper
* @author Miguel Mini
*/
#include <bits/stdc++.h>
#define sz(x) (int)x.size()
#define trav(v, x) for (auto v : x)
#define re(x, y, z) for (int x=y; x<z; ++x)
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define set_to(x, v) fill(all(x), v)
#define eb emplace_back
#define lso(x) ((x)&-(x))
using namespace std;
using ll = long long;
using ii = pair<int, int>;
using vi = vector<int>;
const int mod = 1e9 + 7;
const int maxn = 1e5 + 10;
const int inf = INT_MAX;
vector<ii> g[maxn];
class pipes {
public:
void solveOne(istream& in, ostream& out) {
int n, m;
in >> n >> m;
if (m > n) {
out << 0 << endl;
return;
}
vector<ll> c(n);
vi deg(n);
trav(&v, c) in >> v;
vector<ii> edges;
re(i, 0, m) {
int a, b;
in >> a >> b;
a -= 1; b -= 1;
edges.eb(a, b);
g[a].eb(b, i); deg[a] += 1;
g[b].eb(a, i); deg[b] += 1;
}
vi res(m);
vector<bool> vis(m);
queue<int> Q;
re(i, 0, n) {
if (sz(g[i]) == 1) {
Q.push(i);
}
}
while (!Q.empty()) {
int q = Q.front(); Q.pop();
for (auto v : g[q]) {
int id = v.second;
if (vis[id]) continue;
vis[id] = 1;
m -= 1;
res[id] = 2 * c[q];
int u = v.first;
c[u] -= c[q];
c[q] = 0;
deg[u] -= 1;
if (deg[u] == 1) {
Q.push(u);
}
}
deg[q] = 0;
}
if (m == 0 and accumulate(all(c), 0ll) == 0) {
trav(v, res) out << v << endl;
} else if (m&1) {
int x = 0;
while (deg[x] == 0) x += 1;
ll sum = 0;
vector<int> t;
function<int(int, vi&, ll&)> dfs = [&](int v, vi& t, ll& sum)->int {
if (deg[v] != 2) return -inf;
sum = c[v] - sum;
trav(node, g[v]) {
if (!vis[node.second]) {
vis[node.second] = 1;
t.emplace_back(node.second);
if (node.first == x) return 1;
return dfs(node.first, t, sum) + 1;
}
}
return -inf;
};
if (dfs(x, t, sum) == m) {
res[t[0]] = 2 * c[x] - sum;
sum = res[t[0]];
re(i, 1, sz(t)) {
x ^= edges[t[i-1]].first ^ edges[t[i-1]].second;
res[t[i]] = 2 * c[x] - sum;
sum = res[t[i]];
}
trav(v, res) out << v << endl;
} else {
out << 0 << endl;
}
} else {
out << 0 << endl;
}
}
void solve(istream& in, ostream& out) {
int testNumber = 1;
//in >> testNumber;
re(tc, 1, testNumber+1) {
//out << "Case #" << tc << ": ";
solveOne(in, out);
}
}
};
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
pipes solver;
std::istream& in(std::cin);
std::ostream& out(std::cout);
solver.solve(in, out);
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
6 ms |
2688 KB |
Output is correct |
2 |
Correct |
6 ms |
2688 KB |
Output is correct |
3 |
Correct |
8 ms |
2816 KB |
Output is correct |
4 |
Correct |
248 ms |
9452 KB |
Output is correct |
5 |
Correct |
6 ms |
2688 KB |
Output is correct |
6 |
Correct |
6 ms |
2688 KB |
Output is correct |
7 |
Correct |
6 ms |
2688 KB |
Output is correct |
8 |
Correct |
6 ms |
2688 KB |
Output is correct |
9 |
Correct |
8 ms |
2816 KB |
Output is correct |
10 |
Correct |
8 ms |
2816 KB |
Output is correct |
11 |
Correct |
8 ms |
2816 KB |
Output is correct |
12 |
Correct |
8 ms |
2688 KB |
Output is correct |
13 |
Correct |
200 ms |
8044 KB |
Output is correct |
14 |
Correct |
244 ms |
9068 KB |
Output is correct |
15 |
Correct |
260 ms |
9324 KB |
Output is correct |
16 |
Correct |
224 ms |
8428 KB |
Output is correct |
17 |
Correct |
254 ms |
9452 KB |
Output is correct |
18 |
Correct |
262 ms |
9580 KB |
Output is correct |
19 |
Correct |
251 ms |
8684 KB |
Output is correct |
20 |
Correct |
6 ms |
2688 KB |
Output is correct |
21 |
Correct |
8 ms |
2688 KB |
Output is correct |
22 |
Correct |
266 ms |
9512 KB |
Output is correct |
23 |
Correct |
208 ms |
8044 KB |
Output is correct |
24 |
Correct |
265 ms |
9452 KB |
Output is correct |
25 |
Correct |
205 ms |
8300 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
6 ms |
2688 KB |
Output is correct |
2 |
Correct |
8 ms |
2816 KB |
Output is correct |
3 |
Correct |
60 ms |
8300 KB |
Output is correct |
4 |
Correct |
6 ms |
2688 KB |
Output is correct |
5 |
Correct |
6 ms |
2688 KB |
Output is correct |
6 |
Correct |
6 ms |
2688 KB |
Output is correct |
7 |
Correct |
6 ms |
2688 KB |
Output is correct |
8 |
Correct |
6 ms |
2688 KB |
Output is correct |
9 |
Correct |
6 ms |
2688 KB |
Output is correct |
10 |
Correct |
6 ms |
2688 KB |
Output is correct |
11 |
Correct |
6 ms |
2688 KB |
Output is correct |
12 |
Correct |
6 ms |
2688 KB |
Output is correct |
13 |
Correct |
6 ms |
2688 KB |
Output is correct |
14 |
Correct |
6 ms |
2688 KB |
Output is correct |
15 |
Correct |
9 ms |
2816 KB |
Output is correct |
16 |
Correct |
8 ms |
2816 KB |
Output is correct |
17 |
Correct |
6 ms |
2688 KB |
Output is correct |
18 |
Correct |
6 ms |
2688 KB |
Output is correct |
19 |
Correct |
6 ms |
2688 KB |
Output is correct |
20 |
Correct |
6 ms |
2688 KB |
Output is correct |
21 |
Correct |
6 ms |
2688 KB |
Output is correct |
22 |
Correct |
8 ms |
2816 KB |
Output is correct |
23 |
Correct |
219 ms |
11504 KB |
Output is correct |
24 |
Correct |
264 ms |
12780 KB |
Output is correct |
25 |
Correct |
64 ms |
8300 KB |
Output is correct |
26 |
Correct |
6 ms |
2688 KB |
Output is correct |
27 |
Correct |
6 ms |
2688 KB |
Output is correct |
28 |
Correct |
6 ms |
2688 KB |
Output is correct |
29 |
Correct |
6 ms |
2688 KB |
Output is correct |
30 |
Correct |
267 ms |
11884 KB |
Output is correct |
31 |
Correct |
285 ms |
15084 KB |
Output is correct |
32 |
Correct |
265 ms |
10732 KB |
Output is correct |
33 |
Correct |
65 ms |
8556 KB |
Output is correct |
34 |
Correct |
6 ms |
2688 KB |
Output is correct |
35 |
Correct |
6 ms |
2688 KB |
Output is correct |
36 |
Correct |
6 ms |
2688 KB |
Output is correct |
37 |
Correct |
6 ms |
2688 KB |
Output is correct |
38 |
Correct |
262 ms |
12140 KB |
Output is correct |
39 |
Correct |
247 ms |
9964 KB |
Output is correct |
40 |
Correct |
268 ms |
12524 KB |
Output is correct |
41 |
Correct |
65 ms |
8300 KB |
Output is correct |
42 |
Correct |
6 ms |
2688 KB |
Output is correct |
43 |
Correct |
6 ms |
2688 KB |
Output is correct |
44 |
Correct |
6 ms |
2688 KB |
Output is correct |
45 |
Correct |
6 ms |
2688 KB |
Output is correct |
46 |
Correct |
265 ms |
11632 KB |
Output is correct |
47 |
Correct |
267 ms |
12656 KB |
Output is correct |
48 |
Correct |
267 ms |
14828 KB |
Output is correct |
49 |
Correct |
68 ms |
8556 KB |
Output is correct |
50 |
Correct |
6 ms |
2688 KB |
Output is correct |
51 |
Correct |
6 ms |
2688 KB |
Output is correct |
52 |
Correct |
7 ms |
2688 KB |
Output is correct |
53 |
Correct |
6 ms |
2688 KB |
Output is correct |
54 |
Correct |
261 ms |
11628 KB |
Output is correct |