Pagini recente » Cod sursa (job #2058953) | Cod sursa (job #750141) | Cod sursa (job #602446) | Cod sursa (job #1831456) | Cod sursa (job #1215649)
#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;
}