Cod sursă (job #153328)

Utilizator avatar mihai.constantin Constantin Mihai mihai.constantin IP ascuns
Problemă Dragoni2 (clasele 11-12) Compilator cpp | 0,88 kb
Rundă Arhiva de probleme Status evaluat
Dată 16 aug. 2015 18:07:35 Scor 20
#include <iostream>
#include <cstdio>
using namespace std;

FILE *in, *out;

const int dmax = 800;

int VARIANTA;
int N,M;
int D_max[dmax+1];
bool A[dmax+1][dmax+1];
bool viz[dmax+1];
int MAX;


void CITIRE()
{
    in = fopen("dragoni2.in", "r");
    out = fopen("dragoni2.out", "w");

    fscanf(in, "%d", &VARIANTA);
    fscanf(in, "%d %d", &N,&M);

    for(int i=1; i<=N; i++) fscanf(in, "%d", &D_max[i]);
    for(int i=1; i<=M; i++)
    {
        int x,y,D;
        fscanf(in, "%d %d %d", &x,&y,&D);

        if(D <= D_max[1]) A[x][y] = A[y][x] = true;
    }
}

void DFS(int nod)
{
    viz[nod] = true;

    if(D_max[nod] > D_max[1]) MAX = D_max[nod];

    for(int i=1; i<=N; i++)
        if(viz[i]==false && A[nod][i] == true) DFS(i);
}

int main()
{
    CITIRE();

    MAX = D_max[1]; DFS(1);

    fprintf(out, "%d", MAX);

    return 0;
}