Cod sursa(job #1183430)

Utilizator buzu.tudor67Tudor Buzu buzu.tudor67 Data 9 mai 2014 01:26:33
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<fstream>
#define maxn 50004
using namespace std;
ifstream fi("distante.in");
ofstream fo("distante.out");

int t,i,n,m,d[maxn];
int sursa,x,y,cost;
bool done[maxn];
bool ok;

int main(){
    fi>>t;
    
    for(;t>0;t--)
       {
        fi>>n>>m>>sursa;
        for(i=1;i<=n;i++) fi>>d[i];
        for(i=1;i<=n;i++) done[i]=0;
        
        if(d[sursa]!=0) ok=0;
        else { ok=1; done[sursa]=1; }
        
        for(i=1;i<=m;i++){
                          fi>>x>>y>>cost;
                          
                          if(d[x]+cost<d[y] || d[y]+cost<d[x]) ok=0;
                          
                          if(!done[x] && (d[x]==d[y]+cost)) done[x]=1;
                          if(!done[y] && (d[y]==d[x]+cost)) done[y]=1;
                         }
                         
        for(i=1;i<=n && ok;i++)
          if(!done[i]) ok=0;
          
        if(ok) fo<<"DA\n";
        else fo<<"NU\n";
       }
    
    fi.close();
    fo.close();
    return 0;
}