Cod sursa(job #1294665)

Utilizator BorleaAndreiBorlea Andrei Daniel BorleaAndrei Data 17 decembrie 2014 22:33:24
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
using namespace std;
#include<iostream>
#include<stdio.h>
FILE *f,*g;
struct arbore
{
    int nod;
    arbore *urm;
};
arbore *l[16001],*p;
int n,v[16001],s[16001],j=0;
void parcurg(arbore *a, int trimde,int ajuns)
{
    s[ajuns]=1;
    while(a)
    {
        if(s[a->nod]==0) parcurg(l[a->nod],ajuns,a->nod);
        a=a->urm;
    }
    if(v[ajuns]+v[trimde]>v[trimde]&&ajuns!=j)
        {v[trimde]=v[trimde]+v[ajuns];}
}

int main()
{
    int i=0,m=-9999999;
    f=fopen("asmax.in","r");
    g=fopen("asmax.out","w");
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++)
        {fscanf(f,"%d",&v[i]);l[i]=NULL;}
    while(!feof(f))
    {
        fscanf(f,"%d %d",&i,&j);
        p=new arbore;
        p->urm=l[i];
        p->nod=j;l[i]=p;
        p=new arbore;
        p->urm=l[j];
        p->nod=i;l[j]=p;
    }

    for(i=1;i<=n;i++) if(m<v[i]) {m=v[i];j=i;}
    parcurg(l[j],j,j);
    m=-9999999;
    for(i=1;i<=n;i++) if(m<v[i]) m=v[i];
    fprintf(g,"%d",m);
}