Cod sursa(job #1452294)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 20 iunie 2015 15:09:01
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<fstream>
#include<vector>
#include<cstring>
using namespace std;
int t, n, m, i, a, b, c, ok, s;
int d[50005], r[50005];
vector<pair<int, int> > v[50005];
ifstream fin("distante.in");
ofstream fout("distante.out");
int main(){
    fin>> t;
    for(; t; t--){
        fin>> n >> m >> s;
        for(i = 1; i <= n; i++){
            fin>> d[i];
        }
        memset(r, 0, sizeof(r));
        ok = 1;
        for(i = 1; i <= m; i++){
            fin>> a >> b >> c;
            //v[a].push_back( make_pair(b, c));
            if(d[a] + c < d[b] || d[b] + c < d[a]){
                ok = 0;
            }
            if(d[b] == d[a] + c){
                r[b] = 1;
            }
            if(d[b] + c == d[a]){
                r[a] = 1;
            }
        }
        r[s] = 1;
        for(i = 1; i <= n; i++){
            if(r[i] == 0){
                ok = 0;
                break;
            }
        }
        if(ok == 1){
            fout<<"DA\n";
        }
        else{
            fout<<"NU\n";
        }
    }
    return 0;
}