Cod sursa(job #771559)

Utilizator badmanDragan Dan badman Data 26 iulie 2012 13:25:23
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#include <vector>
#define MAX 16003

using namespace std;

vector<int> v[MAX];
int a[MAX], cost[MAX], n, sol = -1000;
bool g[MAX];

void dfs(int node) {

    int c = 0;
    g[node] = 1;
    for(int i = 0; i < v[node].size(); ++i) {
        if(!g[v[node][i]]) {
            dfs(v[node][i]);
            if(cost[v[node][i]] > 0)
                c += cost[v[node][i]];
        }
    }
    cost[node] = a[node ] + c;
    if(sol < cost[node])
        sol = cost[node];
}

int main() {
	int i, x, y;
	FILE *f = fopen("asmax.in", "r");
	FILE *g = fopen("asmax.out", "w");
	fscanf(f, "%d", &n);
	for(i = 1; i <= n; i++)
		fscanf(f, "%d", &a[i]);

	for(i = 1; i <= n; i++) {
		fscanf(f, "%d %d", &x, &y);
		v[x].push_back(y);
		v[y].push_back(x);
	}
	dfs(1);
	fprintf(g, "%d", sol);
	fclose(f);
	fclose(g);
	return 0;
}