제출 #284629

#제출 시각아이디문제언어결과실행 시간메모리
284629ScarletSPipes (BOI13_pipes)C++17
30 / 100
1096 ms131076 KiB
#include <bits/stdc++.h>
#define ll long long
#define sz(x) (int)(x).size()
#define pii pair<int,int>
using namespace std;

const int MAXN = 100001;
vector<pii> edges[MAXN];
int score[MAXN];
ll cur[MAXN];
int ans[5*MAXN];

void dfs(int c, int p, int x)
{
    for (pii i : edges[c])
        if (i.first != p)
        {
            dfs(i.first, c, i.second);
            cur[c]+=ans[i.second];
        }
    if (c!=1)
    {
        ans[x]=score[c]-cur[c];
        cur[c]=score[c];
    }
}

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0);
    int n,m,u,v;
    cin>>n>>m;
    for (int i = 1; i <= n; ++i)
        cin>>score[i];
    for (int i = 0; i < m; ++i)
    {
        cin>>u>>v;
        edges[u].push_back({v,i});
        edges[v].push_back({u,i});
    }
    dfs(1,0,0);
    if (score[1]!=cur[1])
    {
        cout<<"0\n";
        return 0;
    }
    for (int i=0;i<m;++i)
        cout<<ans[i]*2<<"\n";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...