# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
228506 |
2020-05-01T09:31:51 Z |
Fischer |
Pipes (BOI13_pipes) |
C++14 |
|
274 ms |
15084 KB |
/**
* 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];
deg[u] -= 1;
if (deg[u] == 1) {
Q.push(u);
}
}
}
if (m == 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) {
//trav(v, t) cout << v << " "; cout << endl;
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;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
6 ms |
2688 KB |
Output is correct |
2 |
Correct |
6 ms |
2688 KB |
Output is correct |
3 |
Correct |
8 ms |
2688 KB |
Output is correct |
4 |
Correct |
264 ms |
9580 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 |
2736 KB |
Output is correct |
9 |
Correct |
8 ms |
2688 KB |
Output is correct |
10 |
Correct |
8 ms |
2816 KB |
Output is correct |
11 |
Correct |
11 ms |
2688 KB |
Output is correct |
12 |
Correct |
8 ms |
2688 KB |
Output is correct |
13 |
Correct |
210 ms |
8044 KB |
Output is correct |
14 |
Correct |
239 ms |
9068 KB |
Output is correct |
15 |
Correct |
267 ms |
9456 KB |
Output is correct |
16 |
Correct |
218 ms |
8428 KB |
Output is correct |
17 |
Correct |
252 ms |
9452 KB |
Output is correct |
18 |
Correct |
262 ms |
9452 KB |
Output is correct |
19 |
Correct |
252 ms |
8812 KB |
Output is correct |
20 |
Correct |
6 ms |
2688 KB |
Output is correct |
21 |
Correct |
8 ms |
2688 KB |
Output is correct |
22 |
Correct |
262 ms |
9452 KB |
Output is correct |
23 |
Correct |
199 ms |
8044 KB |
Output is correct |
24 |
Correct |
265 ms |
9580 KB |
Output is correct |
25 |
Correct |
205 ms |
8304 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
6 ms |
2688 KB |
Output isn't correct |
2 |
Correct |
8 ms |
2816 KB |
Output is correct |
3 |
Correct |
60 ms |
8428 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 |
Incorrect |
6 ms |
2688 KB |
Output isn't 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 |
Incorrect |
6 ms |
2688 KB |
Output isn't correct |
15 |
Correct |
8 ms |
2816 KB |
Output is correct |
16 |
Correct |
9 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 |
Incorrect |
6 ms |
2816 KB |
Output isn't correct |
23 |
Correct |
223 ms |
11500 KB |
Output is correct |
24 |
Correct |
274 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 |
Incorrect |
62 ms |
8172 KB |
Output isn't correct |
31 |
Correct |
268 ms |
15084 KB |
Output is correct |
32 |
Correct |
254 ms |
10532 KB |
Output is correct |
33 |
Correct |
68 ms |
8560 KB |
Output is correct |
34 |
Correct |
6 ms |
2816 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 |
263 ms |
12100 KB |
Output is correct |
39 |
Incorrect |
72 ms |
8812 KB |
Output isn't correct |
40 |
Incorrect |
62 ms |
8556 KB |
Output isn't correct |
41 |
Correct |
64 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 |
261 ms |
11628 KB |
Output is correct |
47 |
Incorrect |
63 ms |
8564 KB |
Output isn't correct |
48 |
Correct |
269 ms |
14964 KB |
Output is correct |
49 |
Correct |
66 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 |
6 ms |
2688 KB |
Output is correct |
53 |
Correct |
5 ms |
2688 KB |
Output is correct |
54 |
Incorrect |
63 ms |
8432 KB |
Output isn't correct |