Pagini recente » Cod sursa (job #1892063) | Cod sursa (job #344144) | Cod sursa (job #2573475) | Cod sursa (job #2349929) | Cod sursa (job #775324)
Cod sursa(job #775324)
#include <iostream>
#include <stdio.h>
using namespace std;
int v[4][200010];
int a[50010];
int n,m,s,T;
int djikastra(int nod)
{
int i,b;
b=1;
for (i=1; i<=m; i++)
if (a[v[2][i]]>a[v[1][i]]+v[3][i])
{
a[v[2][i]]=a[v[1][i]]+v[3][i];
b=0;
break;
}
return b;
}
int main()
{
int i,j;
freopen("distante.in","r",stdin);
freopen("distante.out","w",stdout);
scanf("%i",&T);
for (i=1; i<=T; i++)
{
scanf("%i%i%i",&n,&m,&s);
for (j=1; j<=n; ++j) scanf("%i",&a[j]);
for (j=1; j<=m*2; ++j)
if ( j%2==1 ) scanf("%i%i%i",&v[1][j],&v[2][j],&v[3][j]);
else {
v[1][j]=v[2][j-1];
v[2][j]=v[1][j-1];
v[3][j]=v[3][j-1];
}
if ( djikastra(s) ) printf("DA\n"); else printf("NU\n");
}
return 0;
}