Cod sursa(job #985013)

Utilizator stefanzzzStefan Popa stefanzzz Data 16 august 2013 10:27:47
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <vector>
#define MAXN 50005
#define MAXM 100005
using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");

int t,n,m,s,d[MAXN],a,b,c;
bool vf[MAXN],good;

int main()
{
    int i;
    f>>t;
    while(t--){
        f>>n>>m>>s;
        for(i=1;i<=n;i++){
            f>>d[i];
            vf[i]=0;}
        if(d[s]==0)
            vf[s]=1;
        good=1;
        for(i=1;i<=m;i++){
            f>>a>>b>>c;
            if(d[a]+c<d[b]||d[b]+c<d[a])
                good=0;
            if(d[a]+c==d[b])
                vf[b]=1;
            if(d[b]+c==d[a])
                vf[a]=1;}
        for(i=1;i<=n&&good;i++)
            good&=vf[i];
        if(good)
            g<<"DA\n";
        else
            g<<"NU\n";}
    f.close();
    g.close();
    return 0;
}