Cod sursa(job #1072836)

Utilizator gabriel.badeaGabriel Badea gabriel.badea Data 4 ianuarie 2014 23:01:39
Problema Distante Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#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;
}