Cod sursa(job #1322337)

Utilizator AdrianaMAdriana Moisil AdrianaM Data 19 ianuarie 2015 22:46:19
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream is("distante.in");
ofstream os("distante.out");

int t, n, m, s;

void Solve();

int main()
{
    is >> t;
    while ( t-- )
        Solve();
    is.close();
    os.close();
    return 0;
}

void Solve()
{
    int a, b, c;
    bool answ = false;
    is >> n >> m >> s;
    vector<int> d(n + 1);
    vector<bool> ok(n + 1);
    ok[s] = true;
    if ( d[s] )
        answ = true;
    for ( int i = 1; i <= n; ++i )
        is >> d[i];
    for ( int i = 1; i <= n; ++i )
    {
        is >> a >> b >> c;
        if ( d[a] + c < d[b] || d[b] + c < d[a] )
            answ = 1;
        if ( d[a] + c == d[b] )
            ok[b] = true;
        if ( d[b] + c == d[a] )
            ok[a] = true;
    }
    if ( answ )
    {
        os << "NU\n";
        return;
    }
    for ( int i = 1; i <= n; ++i )
        if ( !ok[i] )
        {
            os << "NU\n";
            return;
        }
    os << "DA\n";
}