Cod sursa(job #1443938)

Utilizator danielmaxim95FMI Maxim Daniel danielmaxim95 Data 29 mai 2015 01:26:46
Problema Asmax Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.93 kb
#include <cstdio>
#include <vector>
#include <string.h>
#define NMAX 16001

using namespace std;

bool viz[NMAX];
int n, vmax, v[NMAX];
vector <int> vecini[NMAX];

void citeste()
{
	int a, b;
	FILE *f = fopen("asmax.in", "r");

	fscanf(f, "%i", &n);
	for (int i = 1; i <= n; i++)
		fscanf(f, "%i", &v[i]);
	for (int i = 1; i < n; i++)
	{
		fscanf(f, "%i%i", &a, &b);
		vecini[a].push_back(b);
		vecini[b].push_back(a);
	}
	vmax = v[1];
	memset(viz, false, NMAX);
	fclose(f);
}

int parcurge(int x)
{
	int y;
	viz[x] = true;
	for (vector<int>::iterator it = vecini[x].begin(); it != vecini[x].end(); it++)
		if (!viz[*it])
		{
			y = parcurge(*it);
			if (y > 0)
				v[x] += y;
		}
	if (vmax < v[x])
		vmax = v[x];
	return v[x];
}

void afiseaza()
{
	FILE *f = fopen("asmax.out", "w");
	fprintf(f, "%i", vmax);
	fclose(f);
}

int main()
{
	citeste();
	parcurge(1);
	afiseaza();
	return 0;
}