Cod sursa(job #632241)

Utilizator hunter_ionutzzzFarcas Ionut hunter_ionutzzz Data 10 noiembrie 2011 17:43:33
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<fstream>
using namespace std;
ifstream fin("distante.in");
ofstream fout("distante.out");
struct tip {long x,y,t;
           };

tip a[250001];
long v[55001],n,m,i,T,k,aux[50001],s;
int ok;

int main()
{   fin >> T;
    for (k=1;k<=T;++k)
    {   fin >> n >> m >> s;
		for (i=1;i<=n;++i)
			fin >> aux[i];
		for (i=1;i<m;++i) 
		    fin >> a[i].x >> a[i].y >> a[i].t;
		for (i=1;i<=n+2;++i) 
	    	v[i] = -1;
        v[s] = 0; 
	    ok = 1;
        while (ok)
	    {   --ok;
	    	for (i=1;i<=m-1;++i)
		    	if ((v[a[i].x] != -1) && ((v[a[i].y] == -1) || (v[a[i].y] > v[a[i].x]+a[i].t)))
	            {   v[a[i].y] =v[a[i].x]+a[i].t;
                    ++ok;
		    	}
        }
		i=1;
		while (v[i] == aux[i] && i!=n)
			++i;
		if (v[i] != aux[i])
			fout << "NU" << '\n';
		else
			fout << "DA" << '\n';
	}
	return 0;
}