Cod sursa(job #2364468)

Utilizator mulilisimomoisescu mihai mulilisimo Data 4 martie 2019 09:00:44
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("mere.in");
ofstream out("mere.out");

int n,v[1001],mat[1001][1001],viz[1002],suma;

void DFS()
{
    int i,temp;
    viz[1] = 1;
    suma = v[1];
    temp = 1;
    while(true)
    {
        int maxi = -1, y;
        for(i=1; i<=n; i++)
            if(mat[temp][i] == 1 && viz[i]==0)
            {
                if(v[i]>maxi)
                {
                    maxi = v[i];
                    y=i;
                }
            }
        if(maxi == -1) break;
        else
        {
            suma+=maxi;
            temp = y;
            viz[y] = 1;
        }

    }
    out<<suma;
}

void citire()
{
    int a,b;
    in>>n;
    for(int i=1; i<=n; i++)
        in>>v[i];
    for(int i=1; i<=n-1; i++)
    {
        in>>a>>b;
        mat[a][b] = 1;
        mat[b][a] = 1;
    }
}

int main()
{
    citire();
    DFS();
    return 0;
}