Pagini recente » Cod sursa (job #459598) | Cod sursa (job #877086) | Cod sursa (job #400) | Cod sursa (job #2373961) | Cod sursa (job #1146795)
#include<fstream>
#define maxn 50001
#define maxm 100001
using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");
int t,n,ok,check[maxn],dist[maxn],e1,e2,cost,nod,m;
int main(){
f>>t;
for(int i=1;i<=t;++i){
ok=1;
f>>n>>m>>nod;
for(int j=1;j<=n;++j){
check[i]=0;
f>>dist[j];
}
check[nod]=1;
for(int i=1;i<=m;++i){
f>>e1>>e2>>cost;
if(dist[e1]+cost < dist[e2] || dist[e2]+cost<dist[e1])
ok=0;
if(check[e1]==0 && dist[e1]==dist[e2]+cost)
check[e1]=1;
if(check[e2]==0 && dist[e2]==dist[e1]+cost)
check[e2]=1;
}
ok=dist[nod]==0;
for(int i=1;i<=n && ok ;++i)
if(check[i]==0)
ok=0;
if(ok)
g<<"DA\n";
else
g<<"NU\n";
}
return 0;
}