Cod sursa(job #2275719)

Utilizator shantih1Alex S Hill shantih1 Data 3 noiembrie 2018 14:12:11
Problema Distante Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <iostream>
#include <fstream>
#include <vector>
#define nmx 100005
#define inf 2147483647

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

int n,t,m,s,i,j,nr;
int d[nmx],df[nmx];
vector<pair<int,int>> ad[nmx];

int main() {
	
	fin>>t;
	while(t--)
	{
		fin>>n>>m>>s;
		for(i=1;i<=n;i++)
		{
			fin>>d[i];
			df[i]=inf;
			while(!ad[i].empty())	ad[i].pop_back();
		}
		while(m--)
		{
			fin>>i>>j>>nr;
			ad[i].push_back({j,nr});
			ad[j].push_back({i,nr});
		}
		df[s]=0;
		for(i=1;i<=n;i++)
			for(auto j:ad[i])
				df[j.first]=min(df[j.first], d[i]+j.second);
		
		bool ok=1;
		for(i=1;i<=n;i++)
			if(d[i]!=df[i])	ok=0;
		
		if(ok)	fout<<"DA\n";
		else	fout<<"NU\n";
	}
}