Cod sursa(job #1044764)

Utilizator BartieSocaciu Vlad Bartie Data 30 noiembrie 2013 12:30:18
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <set>
#include <climits>

#define INFINIT INT_MAX
#define mp make_pair

using namespace std;

ifstream fin("distante.in");
ofstream fout("distante.out");

struct element{
    int vf;
    int d;
};

int caz,n,m,nod,d[50005];
vector<element> V[50005];

int main()
{
    fin>>caz;//numar cazuri
    for(;caz;caz--){
        //CITIRE
        fin>>n>>m>>nod;
        for(int i=1;i<=n;i++){
            fin>>d[i];
        }
        int a;element b,c;
        for(;m;m--){
            fin>>a>>b.vf>>b.d;
            V[a].push_back(b);
            c.vf=a;c.d=b.d;
            V[b.vf].push_back(c);
        }
        //VERIFICARE
        bool OK=true;
        for(int i=1;i<=n;i++){
            for(int j=0;j<V[i].size();j++){
                int k=V[i][j].vf,dist=V[i][j].d;
                if(d[k]>d[i]+dist)
                    OK=false;
            }
        }

        if(OK==true)
            fout<<"DA\n";
        else
            fout<<"NU\n";
    }
    return 0;
}