Cod sursa(job #1304838)

Utilizator robertstrecheStreche Robert robertstreche Data 29 decembrie 2014 12:52:31
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>

#define lmax 50005

using namespace std;

ifstream f("distante.in");
ofstream g("distante.out");

int t,n,m,s,x,y,z;
int dist[lmax],distm[lmax];

inline void solve()
{
    bool ok=1;

    f>>n>>m>>s;

    for (int i=1;i<=n;i++)
      {
          f>>dist[i];
          distm[i]=10000000;
      }

    distm[s]=0;

    if (dist[s])
    ok=0;

    for (int i=1;i<=m;i++)
     {
         f>>x>>y>>z;

         if (dist[y]+z<distm[x])
          distm[x]=dist[y]+z;

         if (dist[x]+z<distm[y])
          distm[y]=dist[x]+z;
     }
   for (int i=1;i<=n;i++)
     if (dist[i]!=distm[i])
      ok=0;

    if (ok)
     g<<"DA\n";
    else
     g<<"NU\n";
}

int main()
{
   f>>t;

   for (int i=1;i<=t;i++)
     solve();

  f.close();
  g.close();
}