Cod sursa(job #2724785)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 17 martie 2021 20:49:31
Problema Distante Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("distante.in");
ofstream fout("distante.out");
const ll NMAX = 50005;
ll dist[NMAX],a[NMAX];
ll n,m,s,x,y,z,T;
ll modul(ll nr){
    if(nr<0) return (nr*(-1));
    return nr;
}
void solve(){
    memset(a,false,sizeof(a));
    memset(dist,0,sizeof(dist));
    fin >> n >> m >> s;
    bool ok=true;
    for(ll i=1;i<=n;i++) fin >> dist[i];
    for(ll i=1;i<=m;i++){
        fin >> x >> y >> z;
        if(modul(dist[x]-dist[y])>z) ok=false;
        if(modul(dist[x]-dist[y])==z){
            if(dist[x]>dist[y]) a[x]=true;
            else                a[y]=true;
        }
    }
    bool verif=false;
    for(ll i=1;i<=n;i++){
        if(a[i]==false){
            verif=true;
            break;
        }
    }
    if(verif==false) ok=false;
    if(ok==true) fout << "DA" << '\n';
    else         fout << "NU" << '\n';
}
int main()
{
    fin >> T;
    for(ll t=1;t<=T;t++){
        solve();
    }
    return 0;
}