Cod sursa(job #612077)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 5 septembrie 2011 18:46:29
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<fstream.h>
#define N 50001
typedef struct nod
{long info,cost;
struct nod *next;}Nod;
long i,k,c,n,m,s,t,l,d[N],f[N];
Nod *g[N],*p;

void add(Nod *&q,long x,long y)
{Nod *p=new Nod;
p->info=x,p->cost=y,p->next=q,q=p;}

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]=N;
      while(m--)
             x>>i>>k>>c,add(g[i],k,c),add(g[k],i,c);
      f[s]=l=0;
      for(i=1;i<=n;i++)
      for(p=g[i];p;p=p->next)
      if(f[i]>p->cost+f[p->info])
             f[i]=p->cost+f[p->info];
      for(i=1;i<=n;i++)
      if(f[i]==d[i])
             l++;
      if(l==n)
             y<<"DA\n";
      else
             y<<"NU\n";}
return 0;}