Cod sursa(job #2231358)

Utilizator Andreea_DanielaAndreea Guster Andreea_Daniela Data 13 august 2018 22:04:25
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <stdlib.h>
#define infinit 0x3f3f3f
using namespace std;

int t, n, m, s; //t= cate grafuri sunt pe foaie  //n= nr noduri, s = sursa,  m= nr muchii
int dist[500001];  //dist minime calculate de bronzel
bool ok;


int main()
{

    ifstream fin ("distante.in");
    ofstream fout("distante.out");

    if( !fin.is_open() || !fout.is_open() )
    {
        fout << "The file didn't open!\n";
        exit (EXIT_FAILURE);
    }


    fin >> t;
    for(int j=1; j<=t; j++)
    {
        fin >> n >> m >> s;
        ok = 1;

        for(int i=1; i<= n; i++)
            fin >> dist[i];

        if(dist[s])  ok = 0;

        for(int i=1; i<=m; i++)
        {
           int u, v, w;
           fin >> u >> v >> w;

           if( dist[u] > dist[v] + w  || dist[v] > dist[u] + w)
             ok = 0;
        }

       if(ok)
        fout << "DA\n";
       else
        fout << "NU\n";
    }


    fin.close();
    fout.close();

    return 0;
}