Cod sursa(job #1233423)

Utilizator DanyPrvPirvoaica Daniel DanyPrv Data 25 septembrie 2014 12:17:51
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <vector>
#include <limits.h>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector <int> a[16001];
int n,i,x,y,gr[16001],nre[16001],smax,viz[16001];

void coada(int nr){
	viz[nr]=1;
	for(int i=0;i<nre[nr];i++){
		if(viz[a[nr][i]]==0){
			int el=a[nr][i];
			coada(el);
			if(gr[nr]+gr[a[nr][i]]>gr[nr])
				gr[nr]=gr[nr]+gr[a[nr][i]];
				smax=max(smax,gr[nr]);
		}
	}

}
int main()
{
	int Max=INT_MIN,is=0;
	smax=INT_MIN;
    f>>n;
    for(i=1;i<=n;i++){
    	f>>gr[i];
    	if(gr[i]>Max){
    		Max=gr[i];
    		is=i;
    	}
    }
	for(i=1;i<=n-1;i++){
		f>>x>>y;
		a[x].push_back(y);
		a[y].push_back(x);
	}
	for(i=1;i<=n;i++)
		nre[i]=a[i].size();
	coada(is);
	g<<smax;
    return 0;
}