Cod sursa(job #1287415)

Utilizator BorleaAndreiBorlea Andrei Daniel BorleaAndrei Data 7 decembrie 2014 15:23:52
Problema Asmax Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
using namespace std;
#include<iostream>
#include<stdio.h>
FILE *f,*g;
int s[16000],a[16000][16000],n,c[16000],s1[16000],ic=1,sf=1;
int mx,mx1,t;
void bf(int nod,int sum)
{
    c[ic]=nod;s1[nod]=1;
    while(ic<=sf)
    {
        t=1;
        while(t<=n)
        {
            if(a[c[ic]][t]==1&&s1[t]==0)
            {
                sf++;
                c[sf]=t;
                s1[t]=1;sum=sum+s[t];
                if(mx<sum) {mx=sum;
                }
            }
            t++;
        }
        ic++;

    }

}
int main()
{
    int i=0,x=0,y=0;
    f=fopen("asmax.in","r");
    g=fopen("asmax.out","w");
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++)
        fscanf(f,"%d",&s[i]);
    for(i=1;i<n;i++)
    {
        fscanf(f,"%d %d",&x,&y);
        a[x][y]=1;a[y][x]=1;
    }
   if(i>1)
   {for(i=1;i<=n;i++)
   {
        ic=1;sf=1;
        for(x=1;x<=n;x++) s1[x]=0;
        bf(i,s[i]);
   }
   }
   else mx=s[1];

   fprintf(g,"%d",mx);

}