Cod sursa(job #2367720)

Utilizator maria_sinteaMaria Sintea maria_sintea Data 5 martie 2019 12:02:27
Problema Guvern Scor 0
Compilator cpp-64 Status done
Runda bv_11_12 Marime 0.96 kb
#include <iostream>
#include <cstdio>
#include <vector>
#define N 200005

using namespace std;

int n, cost[N], d[N], x, y, viz[N];
vector <int> a[N];

void citire()
{
    scanf("%d\n", &n);
    for(int i=1;i<n;i++)
    {
        scanf("%d %d\n", &x, &y);
        a[x].push_back(y);
        a[y].push_back(x);
    }

    for(int i=1;i<=n;i++)
        scanf("%d ", &cost[i]);
}

void dfs(int nod, int ad)
{
    if(a[nod].size()==0)
        d[ad]=max(d[ad], 1);
    viz[nod]=1;
    for(int i=0;i<a[nod].size();i++)
    {
        int nod2=a[nod][i];
        if(!viz[nod2])
        {
            dfs(nod2, ad+1);
            if(cost[nod2]<cost[nod])
                d[ad]=max(d[ad], d[ad+1])+1;
            else
                d[ad]=max(d[ad], d[ad+1]);
        }
    }
}

int main()
{
    freopen("guvern.in", "r", stdin);
    freopen("guvern.out", "w", stdout);

    citire();
    dfs(1, 0);
    printf("%d", d[0]);
    return 0;
}