Cod sursa(job #1365954)

Utilizator teo.serbanescuTeo Serbanescu teo.serbanescu Data 28 februarie 2015 17:16:48
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <string.h>

using namespace std;

fstream f("distante.in",ios::in);
fstream g("distante.out",ios::out);

const int nmax = 50010;

int t, k, i, n, m, s, x, y, c, d[nmax], a[nmax], imposibil;

int main()
{
    f >> t;
    for (k = 1; k <= t; k++)
    {
        memset(a, 0, sizeof(a));
        memset(d, 0, sizeof(d));
        f >> n >> m >> s;
        imposibil = 0;
        for (i = 1; i <= n; i++)
        {
            f >> d[i];
            if ((i == s) && (d[i] != 0)) imposibil = 1;
        }
        for (i = 1; i <= m; i++)
        {
            f >> x >> y >> c;
            if (d[x] + c < d[y]) imposibil = 1;
            if (d[x] + c == d[y]) a[y] = 1;
            if (d[y] + c < d[x]) imposibil = 1;
            if (d[y] + c == d[x]) a[x] = 1;
        }
        for (i = 1; i <= n; i++) if ((!a[i]) && (i != s)) imposibil = 1;
        if (imposibil) g << "NU\n";
                else g << "DA\n";
    }
    return 0;
}