Cod sursa(job #2567517)

Utilizator GabyD002Dobrita Gabriel GabyD002 Data 3 martie 2020 17:41:50
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");

int n,val[1<<15];

queue <int> q;
set <int> v[1<<15];

int main()
{   f>>n;
    for(int i=1; i<=n; i++)
        f>>val[i];
    for(int i=1,x,y; f>>x>>y; i++)
    {   v[x].insert(y);
        v[y].insert(x);
    }
    for(int i=1; i<=n; i++)
        if(v[i].size()==1)
            q.push(i);
    while(!q.empty())
    {   int nod=q.front();
        q.pop();
        set <int> :: iterator it;
        for(it=v[nod].begin(); it!=v[nod].end(); it++)
        {   v[*it].erase(v[*it].find(nod));
            if(v[*it].size()==1)
                q.push(*it);
            val[*it]=max(val[*it],val[*it]+val[nod]);
        }
    }
    g<<*max_element(val+1,val+n+1);
    f.close(); g.close(); return 0;
}