Cod sursa(job #1215649)

Utilizator pavlov.ionPavlov Ion pavlov.ion Data 1 august 2014 18:13:24
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<fstream>
#include<vector>
#include<cstring>
#define MAXN 50005
#define pb push_back
using namespace std;
int T,N,M,a,b,c,S,d[MAXN];
vector<int> G[MAXN],C[MAXN];
int v1() { return d[S]==0; }
int v2() {
	int i,j;
	for(i=1;i<=N;i++)
	     for(j=0;j<G[i].size();j++)
	           if(d[i]+C[i][j]<d[G[i][j]]) return 0;
	  return 1;
}
//int v3() {	 
int main() {
	ifstream cin("distante.in");
    ofstream cout("distante.out");
	int i,j;
	cin>>T;
	for(j=1;j<=T;j++) {
	     cin>>N>>M>>S;
	     for(i=1;i<=N;i++)
	               cin>>d[i];
	     for(i=1;i<=M;i++){
                       cin>>a>>b>>c;
		               G[a].pb(b);
					   C[a].pb(c);
					   G[b].pb(a);
					   C[b].pb(c);   }
	/*	for(i=1;i<=N;i++) {
		  for(j=0;j<G[i].size();j++)
		      cout<<G[i][j]<<" ";
			  	cout<<"\n";
				}		   
			for(i=1;i<=N;i++) {
		  for(j=0;j<C[i].size();j++)
		      cout<<C[i][j]<<" ";
			  	cout<<"\n";
				}	*/	
	if(v1() && v2()) cout<<"DA"<<"\n";
	   else cout<<"NU"<<"\n";				               
	   }     
return 0;
}