#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
typedef pair<int, int> ii;
const int N = 1e5 + 5;
int n, m, c[N], deg[N];
long long x[5 * N];
ii par[N];
vector<ii> graph[N];
bool vis[N], in[N];
vector<int> cycle;
void dfs(int u, int p, int type) {
vis[u] = 1;
for(int i = 0; i < graph[u].size(); i++) {
int v = graph[u][i].fi;
if(v == p) continue;
if(vis[v] && type == 0 && in[v] == 0) {
int z = u;
while(z != v) {
if(z == 0) break;
cycle.pb(z);
in[z] = 1;
z = par[z].fi;
}
in[v] = 1;
cycle.pb(v);
continue;
}
if(vis[v]) continue;
par[v] = {u, graph[u][i].se};
dfs(v, u, type);
}
}
void bfs(int u, int p) {
for(int i = 0; i < graph[u].size(); i++) {
int v = graph[u][i].fi;
if(v == p) continue;
bfs(v, u);
}
if(u != 1) {
ii lmao = par[u];
x[lmao.se] = 2 * c[u];
c[lmao.fi] = c[lmao.fi] - c[u];
c[u] = 0;
}
}
void bye() {
cout << "0\n";
exit(0);
}
map<ii, int> edge;
queue<int> q;
int main() {
cin.tie(0), ios::sync_with_stdio(0);
cin >> n >> m;
for(int i = 1; i <= n; i++)
cin >> c[i];
for(int i = 1; i <= m; i++) {
int u, v;
cin >> u >> v;
edge[{u, v}] = i;
edge[{v, u}] = i;
++deg[u]; ++deg[v];
graph[u].pb({v, i});
graph[v].pb({u, i});
}
if(n < m)
bye();
dfs(1, 1, 0);
memset(vis, 0, sizeof(vis));
if(n == m + 1) {
bfs(1, 1);
if(c[1] != 0)
bye();
for(int i = 1; i <= m; i++)
cout << x[i] << "\n";
exit(0);
}
if(cycle.size() % 2 == 0)
bye();
dfs(cycle[0], cycle[0], 1);
for(int i = 1; i <= n; i++) {
if(deg[i] == 1)
q.push(i);
}
while(!q.empty()) {
int u = q.front();
q.pop();
ii lmao = par[u];
x[lmao.se] = 2 * c[u];
c[lmao.fi] = c[lmao.fi] - c[u];
c[u] = 0;
if(in[lmao.fi] == 0)
q.push(lmao.fi);
}
long long total = 0, s = cycle.size() - 1;
for(int i = 0; i < cycle.size(); i++) {
if(i % 2 == 0)
total += c[cycle[i]];
else
total -= c[cycle[i]];
}
x[edge[{cycle[0], cycle[s]}]] = total;
if(total % 2 != 0)
bye();
c[cycle[0]] -= total / 2;
c[cycle[s]] -= total / 2;
for(int i = 0; i < cycle.size() - 1; i++) {
x[edge[{cycle[i], cycle[i + 1]}]] = 2 * c[cycle[i]];
c[cycle[i + 1]] = c[cycle[i + 1]] - c[cycle[i]];
c[cycle[i]] = 0;
}
if(c[cycle[s]] != 0)
bye();
for(int i = 1; i <= m; i++)
cout << x[i] << "\n";
}
Compilation message
pipes.cpp: In function 'void dfs(int, int, int)':
pipes.cpp:27:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 0; i < graph[u].size(); i++) {
~~^~~~~~~~~~~~~~~~~
pipes.cpp: In function 'void bfs(int, int)':
pipes.cpp:49:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 0; i < graph[u].size(); i++) {
~~^~~~~~~~~~~~~~~~~
pipes.cpp: In function 'int main()':
pipes.cpp:115:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 0; i < cycle.size(); i++) {
~~^~~~~~~~~~~~~~
pipes.cpp:126:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 0; i < cycle.size() - 1; i++) {
~~^~~~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
2808 KB |
Output is correct |
2 |
Correct |
4 ms |
2932 KB |
Output is correct |
3 |
Correct |
5 ms |
3012 KB |
Output is correct |
4 |
Correct |
237 ms |
21952 KB |
Output is correct |
5 |
Correct |
4 ms |
21952 KB |
Output is correct |
6 |
Correct |
4 ms |
21952 KB |
Output is correct |
7 |
Correct |
4 ms |
21952 KB |
Output is correct |
8 |
Correct |
4 ms |
21952 KB |
Output is correct |
9 |
Correct |
5 ms |
21952 KB |
Output is correct |
10 |
Correct |
5 ms |
21952 KB |
Output is correct |
11 |
Correct |
5 ms |
21952 KB |
Output is correct |
12 |
Correct |
5 ms |
21952 KB |
Output is correct |
13 |
Correct |
177 ms |
21952 KB |
Output is correct |
14 |
Correct |
221 ms |
21952 KB |
Output is correct |
15 |
Correct |
237 ms |
22104 KB |
Output is correct |
16 |
Correct |
187 ms |
22104 KB |
Output is correct |
17 |
Correct |
243 ms |
22104 KB |
Output is correct |
18 |
Correct |
239 ms |
22172 KB |
Output is correct |
19 |
Correct |
247 ms |
24604 KB |
Output is correct |
20 |
Correct |
4 ms |
24604 KB |
Output is correct |
21 |
Correct |
5 ms |
24604 KB |
Output is correct |
22 |
Correct |
242 ms |
24604 KB |
Output is correct |
23 |
Correct |
181 ms |
24604 KB |
Output is correct |
24 |
Correct |
214 ms |
24604 KB |
Output is correct |
25 |
Correct |
204 ms |
24604 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
4 ms |
24604 KB |
Output isn't correct |
2 |
Incorrect |
5 ms |
24604 KB |
Output isn't correct |
3 |
Correct |
208 ms |
24604 KB |
Output is correct |
4 |
Correct |
208 ms |
24604 KB |
Output is correct |
5 |
Correct |
205 ms |
24604 KB |
Output is correct |
6 |
Execution timed out |
1068 ms |
79232 KB |
Time limit exceeded |
7 |
Incorrect |
4 ms |
79232 KB |
Output isn't correct |
8 |
Correct |
4 ms |
79232 KB |
Output is correct |
9 |
Correct |
4 ms |
79232 KB |
Output is correct |
10 |
Correct |
4 ms |
79232 KB |
Output is correct |
11 |
Correct |
4 ms |
79232 KB |
Output is correct |
12 |
Correct |
14 ms |
79232 KB |
Output is correct |
13 |
Correct |
4 ms |
79232 KB |
Output is correct |
14 |
Incorrect |
5 ms |
79232 KB |
Output isn't correct |
15 |
Incorrect |
7 ms |
79232 KB |
Output isn't correct |
16 |
Correct |
5 ms |
79232 KB |
Output is correct |
17 |
Correct |
5 ms |
79232 KB |
Output is correct |
18 |
Correct |
6 ms |
79232 KB |
Output is correct |
19 |
Correct |
5 ms |
79232 KB |
Output is correct |
20 |
Correct |
5 ms |
79232 KB |
Output is correct |
21 |
Correct |
7 ms |
79232 KB |
Output is correct |
22 |
Incorrect |
5 ms |
79232 KB |
Output isn't correct |
23 |
Incorrect |
212 ms |
79232 KB |
Output isn't correct |
24 |
Incorrect |
288 ms |
79232 KB |
Output isn't correct |
25 |
Correct |
186 ms |
79232 KB |
Output is correct |
26 |
Correct |
201 ms |
79232 KB |
Output is correct |
27 |
Correct |
200 ms |
79232 KB |
Output is correct |
28 |
Correct |
186 ms |
79232 KB |
Output is correct |
29 |
Correct |
934 ms |
79232 KB |
Output is correct |
30 |
Correct |
295 ms |
79232 KB |
Output is correct |
31 |
Incorrect |
328 ms |
79232 KB |
Output isn't correct |
32 |
Incorrect |
269 ms |
79232 KB |
Output isn't correct |
33 |
Correct |
218 ms |
79232 KB |
Output is correct |
34 |
Correct |
193 ms |
79232 KB |
Output is correct |
35 |
Correct |
205 ms |
79232 KB |
Output is correct |
36 |
Correct |
189 ms |
79232 KB |
Output is correct |
37 |
Execution timed out |
1089 ms |
81368 KB |
Time limit exceeded |
38 |
Incorrect |
283 ms |
81368 KB |
Output isn't correct |
39 |
Incorrect |
257 ms |
81368 KB |
Output isn't correct |
40 |
Incorrect |
275 ms |
81368 KB |
Output isn't correct |
41 |
Correct |
227 ms |
81368 KB |
Output is correct |
42 |
Correct |
175 ms |
81368 KB |
Output is correct |
43 |
Correct |
173 ms |
81368 KB |
Output is correct |
44 |
Correct |
192 ms |
81368 KB |
Output is correct |
45 |
Execution timed out |
1049 ms |
81368 KB |
Time limit exceeded |
46 |
Incorrect |
267 ms |
81368 KB |
Output isn't correct |
47 |
Incorrect |
268 ms |
81368 KB |
Output isn't correct |
48 |
Incorrect |
308 ms |
81368 KB |
Output isn't correct |
49 |
Correct |
215 ms |
81368 KB |
Output is correct |
50 |
Correct |
197 ms |
81368 KB |
Output is correct |
51 |
Correct |
196 ms |
81368 KB |
Output is correct |
52 |
Correct |
184 ms |
81368 KB |
Output is correct |
53 |
Execution timed out |
1077 ms |
81368 KB |
Time limit exceeded |
54 |
Correct |
276 ms |
81368 KB |
Output is correct |