Pagini recente » Cod sursa (job #1245117) | Cod sursa (job #2331648) | Cod sursa (job #149519) | Cod sursa (job #1306972) | Cod sursa (job #676544)
Cod sursa(job #676544)
#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;
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==1)
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";
}
return 0;
}