Cod sursa(job #1181824)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 3 mai 2014 21:29:12
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <vector>

int main(){
    std::ifstream fin("distante.in");
    std::ofstream fout("distante.out");

    short T; fin>>T;
    while(T--){

        unsigned n,m,s; fin>>n>>m>>s;

        std::vector<unsigned> dist(n+1);
        for(unsigned i=1;i<=n;++i) fin>>dist[i];

        std::vector<bool> verif(n+1,false);
        bool cont=true;

        if(dist[s]==0) verif[s]=true;
        else cont=false;

        for(unsigned i=0;i<m;++i){
            unsigned a,b; unsigned c; fin>>a>>b>>c;

            if(dist[b]>dist[a]+c) cont=false;
            else if(dist[b]==dist[a]+c) verif[b]=true;

            if(dist[a]>dist[b]+c) cont=false;
            else if(dist[a]==dist[b]+c) verif[a]=true;

        }

        for(unsigned i=1;i<=n&&cont;++i) if(!verif[i]) cont=false;

        if(cont) fout<<"DA\n";
        else fout<<"NU\n";

    }
}