Cod sursa(job #3169648)

Utilizator Robilika2007Robert Badea Robilika2007 Data 15 noiembrie 2023 18:33:58
Problema Distante Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <bits/stdc++.h>

using namespace std;

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

struct muchie
{
    int dir, cost;
};

struct zdrang
{
    int nod, dist;
};

#define MAX_N 50000
const int INF = 2e9;

vector<muchie> graf[MAX_N];
int d[MAX_N];
int dB[MAX_N];
bool vis[MAX_N];

priority_queue<int> pq;

int n, m;

void dijkstra()
{
    int node;
    while(!pq.empty())
    {
        node = pq.top();
        pq.pop();
        if(vis[node] == 0)
        {
            for(muchie i : graf[node])
            {
                d[i.dir] = min(d[i.dir], d[node] + i.cost);
                pq.push(i.dir);
            }
            vis[node.nod] = 1;
        }
    }
}

int main()
{
    int t, S, a, b, c;
    int >> t;
    for(int k = 0; k < t; ++k)
    {
        in >> n >> m >> S;
        for(int i = 0; i < n; ++i)
        {
            in >> dB[i];
            d[i] = INF;
            vis[i] = 0;
        }
        for(int i = 0; i < m; ++i)
        {
            in >> a >> b >> c;
            graf[a-1].push_back({b-1, c});
            graf[b-1].push_back({a-1, c});
        }

        d[S] = 0;
        pq.push({S});

        for(int i = 0; i < n; ++i)
        {
            if(d[i]!=dB[i])
            {
                out << "NU" << '\n';
                continue;
            }
        }
        out << "DA" << '\n';
    }

    return 0;
}