Pagini recente » Cod sursa (job #2201109) | Cod sursa (job #151788) | Cod sursa (job #3039607) | Cod sursa (job #1730339) | Cod sursa (job #1072836)
#include<iostream>
using namespace std;
#define MAX 100000
int distanta[50000]; // vector de distante de la nodul sursa la restul nodurilor
bool exista; // flag in caz ca distantele sunt sau nu corecte
int main()
{
int nr_teste, nr_noduri, nr_muchii, nod_sursa, sursa, destinatie, cost;
freopen("distante.in", "r", stdin);
freopen("distante.out", "w", stdout);
cin >> nr_teste; // numarul de grafuri
while(nr_teste)
{
exista = true;
cin >> nr_noduri >> nr_muchii >> nod_sursa;
for(int i = 1; i <= nr_noduri; ++i)
cin >> distanta[i]; // citim vectorul de distante
for(int i = 1; i <= nr_muchii; ++i)
{
cin >> sursa >> destinatie >> cost;
if(distanta[sursa] + cost < distanta[destinatie]) // se verifica proprietatile de relaxare
exista = false;
if(distanta[destinatie] + cost < distanta[sursa]) // se verifica proprietatile de relaxare
exista = false;
}
if(distanta[nod_sursa] != 0)
exista = false; // distanta de la nodul sursa la el insusi e mereu 0
if(exista)
cout << "DA" << endl; // cazul in care toate distantele sunt corect calculate de Bronzarel
else
cout << "NU" << endl;
nr_teste--;
}
return 0;
}