Cod sursa(job #947299)

Utilizator monica11Szekely Monica monica11 Data 7 mai 2013 09:28:31
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include<fstream>
#define inf 1001
using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");
struct muchie
{
    long x,y,c;
}q[100001];
long t;
long n,m,s,gasit;
long d[50001];
long v[50001];
int main()
{
    long x,y,c;
    long ok;
    f>>t;
    for(long k=1;k<=t;k++)
    {
        gasit=0;
        f>>n>>m>>s;
        for(long j=1;j<=n;j++)
            f>>v[j];
        for(long j=1;j<=m;j++)
        {
            f>>x>>y>>c;
            q[j].x=x;
            q[j].y=y;
            q[j].c=c;
            if(x==s)
             d[y]=c;
            if(y==s)
             d[x]=c;
        }
        for(long i=1;i<=n;i++)
            if(d[i]==0&&i!=s)
             d[i]=inf;
        do
        {
            ok=1;
            for(long i=1;i<=m;i++)
             if(d[q[i].y]>d[q[i].x]+q[i].c)
             {
                 d[q[i].y]=d[q[i].x]+q[i].c;
                 ok=0;
             }
        }while(!ok);
        for(long i=1;i<=n;i++)
         //{
            // g<<d[i]<<" "<<v[i]<<"\n";
         //}
          if(d[i]!=v[i])
           gasit=1;
         // g<<d[i]<<" ";
        if(!gasit)
         g<<"DA"<<"\n";
        else g<<"NU"<<"\n";
        //g<<"\n";
    }
    return 0;
}