Pagini recente » Cod sursa (job #2478003) | Cod sursa (job #2302370) | Cod sursa (job #701209) | Cod sursa (job #1031604) | Cod sursa (job #1146801)
#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){
f>>n>>m>>nod;
for(int j=1;j<=n;++j){
check[i]=0;
f>>dist[j];
}
check[nod]=1;
ok=dist[nod]==0;
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;
}
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;
}