Cod sursa(job #1224360)

Utilizator DjokValeriu Motroi Djok Data 30 august 2014 18:18:27
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<fstream>
#include<algorithm>
#include<cstring>
using namespace std;

int t,n,m,s,i,d[50005],x,y,c;
bool u,viz[50005];

int main()
{
  ifstream cin("distante.in");
  ofstream cout("distante.out");

  cin>>t;
  while(t--)
  {
    memset(viz,0,sizeof(viz));
    cin>>n>>m>>s; viz[s]=1;
    for(i=1;i<=n;++i) cin>>d[i];
    u=(d[s]) ? 1:0;
    
    while(m--)
    {
      cin>>x>>y>>c;
      if(d[x]+c<d[y]) u=1;
      if(d[y]+c<d[x]) u=1;
      if(d[x]+c==d[y]) viz[y]=1;
      if(d[y]+c==d[x]) viz[x]=1;
    }
   
    for(i=1;i<=n && !u;++i)
    if(!viz[i]) u=1;

    if(u) cout<<"NU\n"; else cout<<"DA\n";
  }

 return 0;
}