Cod sursa(job #608262)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 15 august 2011 22:50:33
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<stdio.h>
#include<vector.h>
#define pb push_back
#define N 50001
int c,t;
long i,k,n,m,s,l,j,d[N];
vector<long> g[N],e[N];
int main()
{freopen("distante.in","r",stdin);
freopen("distante.out","w",stdout);
scanf("%d",&t);
while(t--)
      {scanf("%ld%ld%ld",&n,&m,&s);
      for(i=1;i<=n;i++)
             scanf("%ld",&d[i]);
      while(m--)
             {scanf("%ld%ld%d",&i,&k,&c);
             g[i].pb(k);
             g[k].pb(i);
             e[i].pb(c);
             e[k].pb(c);}
      k=0;
      if(d[s])
             k=1;
      for(i=1;i<=n;i++)
      if(i!=s)
             {l=0;
             for(j=0;j<g[i].size();j++)
             if(d[i]!=e[i][j]+d[j])
                      l++;
             if(l==g[i].size())
                      {k=1;
                      break;}}
      if(!k)
             printf("DA\n");
      else
             printf("NU\n");}
return 0;}