Pagini recente » Cod sursa (job #2301944) | Cod sursa (job #330053) | Cod sursa (job #1726241) | Cod sursa (job #1584031) | Cod sursa (job #2120772)
#include <cstdio>
#include <utility>
#include <vector>
#define MAXN 50001
using namespace std;
vector <pair <int,int> >v[MAXN];
int dist[MAXN];
int main()
{
FILE *fin,*fout;
fin=fopen("distante.in","r");
fout=fopen("distante.out","w");
int t,n,m,x,y,c;
bool ok;
fscanf(fin,"%d",&t);
for(int i=0;i<t;i++)
{
fscanf(fin,"%d%d%d",&n,&m,&x);
for(int j=1;j<=n;j++)
fscanf(fin,"%d",&dist[j]);
if(!dist[x])
ok=true;
else
ok=false;
for(int j=0;j<m;j++)
{
fscanf(fin,"%d%d%d",&x,&y,&c);
v[x].push_back(make_pair(y,c));
v[y].push_back(make_pair(x,c));
}
for(int j=1;j<=n && ok;j++)
for(unsigned int k=0;k<v[j].size();k++)
{
y=v[j][k].first;c=v[j][k].second;
if(dist[y]>dist[j]+c)
{
ok=false;
break;
}
}
if(ok)
fprintf(fout,"DA\n");
else
fprintf(fout,"NU\n");
for(int j=1;j<=n;j++)
v[j].clear();
}
fclose(fin);
fclose(fout);
}