Pagini recente » Cod sursa (job #3150735) | Cod sursa (job #1282317) | Cod sursa (job #2746834) | Cod sursa (job #2021622) | Cod sursa (job #677537)
Cod sursa(job #677537)
#include<fstream>
using namespace std;
int X,Y,d,D[250005],S,i,j,N,M,ok,poz,Min,k,D2[250005],B;
ifstream f("distante.in");
ofstream g("distante.out");
struct nod{
int x,y,dist;
nod* adr;
}*A,*p;
void citire (){
f>>N>>M>>S;
D[S]=0;
for(i=1;i<=N;i++)
f>>D2[i];
for(i=1;i<=N;i++)
if(i!=S)
D[i]=99999999;
A=NULL;
for(int i=1;i<=M;i++){
f>>X>>Y>>d;
p=new nod;
p->x =X;
p->y =Y;
p->dist=d;
p->adr=A;
A=p;
if (X==S)
D[Y]=d;
}
}
int main(){
f>>B;
for(j=1;j<=B;j++)
{
citire();
ok=1;
while (ok)
{p=A; ok=0;
while (p!=NULL)
{
if (D[p->y]>D[p->x]+p->dist)
{
D[p->y]=D[p->x]+p->dist;
ok=1;
}
p=p->adr;
}
}
for(i=1;i<=N;i++)
if(i!=S)
if(D[i]==99999999)
D[i]=0;
D[S]=0;
for(i=1;i<=N;i++)
if(i!=S)
if(D[i]!=D2[i])
ok=1;
if(ok)
g<<"NU\n";
else
g<<"DA\n";
for(i=1;i<=N;i++)
D[i]=D2[i]=0;
}
return 0;
}