Pagini recente » Cod sursa (job #988725) | Cod sursa (job #106606) | Cod sursa (job #621716) | Cod sursa (job #1095354) | Cod sursa (job #345388)
Cod sursa(job #345388)
#include<fstream.h>
int cost,b[5002][5002],c[5002][5002],v[5002];
long d[5002];
void parcurgere(int k)
{
int i;
v[k]=1;
for (i=1; i<=b[k][0]; i++)
{
cost=cost+c[k][i];
if (d[b[k][i]]==0 || cost<d[b[k][i]])
d[b[k][i]]=cost;
if (v[b[k][i]]==0)
parcurgere(b[k][i]);
cost=cost-c[k][i];
}
}
int main()
{
long t,n,m,s,i,j,x,y,co,a[5002],ok;
ofstream fout("distante.out");
ifstream fin("distante.in");
fin>>t;
for (i=1; i<=t; i++)
{
fin>>n>>m>>s;
for (j=1; j<=n; j++)
fin>>a[j];
for (j=1; j<=m; j++)
{
fin>>x>>y>>co;
b[x][0]++; b[x][b[x][0]]=y;
c[x][0]++; c[x][c[x][0]]=co;
b[y][0]++; b[y][b[y][0]]=x;
c[y][0]++; c[y][c[y][0]]=co;
}
cost=0;
parcurgere(s);
d[s]=0; ok=0;
for (j=1; j<=n; j++)
if (a[j]!=d[j])
{
ok=1; break;
}
if (ok==0)
fout<<"DA"<<'\n'; else
fout<<"NU"<<'\n';
}
fin.close();
fout.close();
return 0;
}