Cod sursa(job #612074)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 5 septembrie 2011 18:34:14
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<fstream.h>
#include<vector.h>
#define pb push_back
#define N 50001
#define INF 2000000000
#define lul unsigned long long
lul i,k,c,n,m,s,t,l,j,d[N],f[N];
vector<lul> g[N],e[N];
int main()
{ifstream x("distante.in");
ofstream y("distante.out");
x>>t;
while(t--)
      {x>>n>>m>>s;
      for(i=1;i<=n;i++)
             x>>d[i],f[i]=INF;
      while(m--)
             {x>>i>>k>>c;
             g[i].pb(k);
             g[k].pb(i);
             e[i].pb(c);
             e[k].pb(c);}
      f[s]=l=0;
      for(i=1;i<=n;i++)
      for(j=0;j<g[i].size();j++)
      if(f[i]>e[i][j]+f[g[i][j]])
             f[i]=e[i][j]+f[g[i][j]];
      for(i=1;i<=n;i++)
      if(f[i]==d[i])
             l++;
      if(l==n)
             y<<"DA\n";
      else
             y<<"NU\n";}
return 0;}