Cod sursa(job #1451013)

Utilizator MaligMamaliga cu smantana Malig Data 15 iunie 2015 19:14:15
Problema Distante Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<iostream>
#include<fstream>
#include<cmath>
#include<algorithm>
#include<vector>
#include<bitset>
#include<cstring>

#define ull unsigned long long
#define ll long long
#define pb push_back
#define FOR(a,b,c) for (int a=b;a<=c; ++a)
#define ROF(a,b,c) for (int a=b;a>=c; --a)

using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");
int T;
int dist[50005];

int main()
{
    f>>T;
    while (T--)
    {
        int N,M,S;
        f>>N>>M>>S;
        FOR (i,1,N)
            f>>dist[i];
        bool ok=true;
        if (dist[S]!=0) ok=false;
        FOR (i,1,M)
        {
            int a,b,c;
            f>>a>>b>>c;
            if (dist[a]+c<dist[b] || dist[b]+c<dist[a]) {
                ok=false;break;
            }
        }
        if (ok) g<<"DA\n";
        else g<<"NU\n";
    }
    f.close();g.close();
    return 0;
}