This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <vector>
using namespace std;
using ll = long long;
using vi = vector<int>;
using pii = pair<int, int>;
using vpii = vector<pii>;
using vll = vector<ll>;
const int mx = 100'000;
int N, M;
vpii edge[1+mx];
vll c(1+mx);
vll x(1+mx);
void dfs(int u, int p)
{
for(pii vp : edge[u])
{
int v = vp.first;
int e = vp.second;
if(v == p) continue;
dfs(v, u);
x[e] = 2*c[v];
c[v] = 0;
c[u] -= c[v];
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int N, M;
cin >> N >> M;
if(M > N)
{
cout << "0\n";
return 0;
}
for(int i = 1; i <= N; i++) cin >> c[i];
for(int j = 1; j <= M; j++)
{
int u, v;
cin >> u >> v;
edge[u].push_back({v, j});
edge[v].push_back({u, j});
}
if(M == N-1)
{
dfs(1, 0);
}
for(int e = 1; e <= M; e++)
cout << x[e] << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |