Pagini recente » Istoria paginii template/preoni-2008/runda-finala/rezultate | Cod sursa (job #253010) | Stelele Informaticii 2009, clasele 9-10, ziua 1 | Cod sursa (job #2525998) | Cod sursa (job #2900363)
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
FILE *in,*out;
int N,M,S,T,X,Y,Z;
vector<int> v(N + 1 , 0);
bool flag;
int main()
{
in = fopen("distante.in","r");
out = fopen("distante.out","w");
fscanf(in,"%d",&T);
for(int t=1;t<=T;t++)
{
fscanf(in,"%d%d%d",&N,&M,&S);
flag=true;
// distantele minime calculate de bronzarel
for(int i=1;i<=N;i++)
fscanf(in,"%d",&v[i]);
// iau fiecare muchie din fisier si incerc sa vad daca pot obtine un drum mai scurt,adica x,y sunt capetele muchie,iar c costul si verific daca d+c<d[y]||d[y]+c<d
for(int i=1;i<=M;i++)
{
fscanf(in,"%d%d%d",&X,&Y,&Z);
if((v[X] + Z < v[Y]) || (v[Y] + Z < v[X]))
// bronzarel nu a calculat bine distanta
flag = false;
}
if(v[S]!=0)
flag=false;
if(flag)
fprintf(out,"DA\n");
else
fprintf(out,"NU\n");
}
return 0;
}