Submission #1575264


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int TAM = 100004;

vector <ll> adj [TAM];
ll val [TAM], pt [TAM];
int n;

void form( int x ){
    int nxt;
    for( int i = 0 ; i < adj[x].size() ; i ++ ){
        nxt = adj[x][i];
        if( nxt == pt[x] ) continue;
        pt[nxt] = x;
        //cout << " parent " << nxt << " = " << pt[nxt] << endl ;
        form(nxt);
    }
}

ll dn, up;
void solve ( ll cap , ll sum ){
    dn = sum - cap;
    up = cap - dn;
}

bool pos = 1;

ll find_up( int x ){
    //cout << " IN " << x << endl ;
    if( adj[x].size() == 1 ) return val[x];
    ll sum = 0, cap = val[x];
    int nxt;
    ll v;
    for( int i = 0 ; i < adj[x].size() ; i ++ ){
        nxt = adj[x][i];
        if( nxt == pt[x] ) continue;
        v = find_up(nxt);
        sum += v;
        //cout << x << " -> " << nxt << " = " << v << endl ;
    }
    solve( cap , sum );
    if( dn + up != cap or dn < 0 or up < 0 ) pos = 0;
    return up;
}

int main(){

    int a, b;
    scanf("%d",&n);
    for( int i = 1 ; i <= n ; i ++ )
        scanf("%lld",&val[i]);
    for( int i = 0 ; i < n-1 ; i ++ ){
        scanf("%d%d",&a,&b);
        adj[a].push_back(b);
        adj[b].push_back(a);
    }

    int rt;
    for( int i = 1 ; i <= n ; i ++ ){
        if( adj[i].size() > 1 ){
            pt [i] = i;
            form(i);
            rt = i;
            break;
        }
    }
    if( !find_up(rt) and pos ) printf("YES\n");
    else printf("NO\n");

    return 0;
}

Submission Info

Submission Time
Task A - Addition
User andresrperezr
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1572 Byte
Status RE
Exec Time 110 ms
Memory 3328 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:50:19: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&n);
                   ^
./Main.cpp:52:30: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%lld",&val[i]);
                              ^
./Main.cpp:54:28: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d",&a,&b);
                            ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 300
Status
RE × 2
RE × 16
Set Name Test Cases
Sample sample1.txt, sample2.txt
All sample1.txt, sample2.txt, in1.txt, in10.txt, in11.txt, in12.txt, in2.txt, in3.txt, in4.txt, in5.txt, in6.txt, in7.txt, in8.txt, in9.txt, sample1.txt, sample2.txt
Case Name Status Exec Time Memory
in1.txt RE 108 ms 3328 KB
in10.txt RE 108 ms 3328 KB
in11.txt RE 97 ms 2560 KB
in12.txt RE 97 ms 2560 KB
in2.txt RE 108 ms 3328 KB
in3.txt RE 108 ms 3328 KB
in4.txt RE 108 ms 3328 KB
in5.txt RE 108 ms 3328 KB
in6.txt RE 109 ms 3328 KB
in7.txt RE 108 ms 3328 KB
in8.txt RE 108 ms 3328 KB
in9.txt RE 110 ms 3328 KB
sample1.txt RE 96 ms 2560 KB
sample2.txt RE 96 ms 2560 KB