Cod sursa(job #2734851)

Utilizator codrut86Coculescu Ioan-Codrut codrut86 Data 1 aprilie 2021 15:10:53
Problema Distante Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
using namespace std;

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

const int mxn = 1e5 + 5, oo = (1 << 30);

struct muchie{
    int first, second, cost;
}a[mxn];

int n, m, k, i, d[50005];

int main()
{
    int T;
    in >> T;
    while(T--)
    {
        in >> n >> m >> k;
        for(i = 1; i <= n; i++)
            in >> d[i];

        for(i = 1; i <= m; i++)
            in >> a[i].first >> a[i].second >> a[i].cost;

         bool ok = 1;
         if(d[k]) ok = 0;

         for(i = 1; i <= m && ok; i++)
         {
             int x = a[i].first, y = a[i].second, c = a[i].cost;
             if(d[x] <= d[y] && d[x] + c < d[y]) ok = 0;
             if(d[y] < d[x] && d[y] + c < d[x]) ok = 0;
         }

         out << (ok ? "DA\n" : "NU\n");
      }
      return 0;
}