Pagini recente » Cod sursa (job #2573047) | Cod sursa (job #2573075) | Cod sursa (job #121894) | Cod sursa (job #2791414) | Cod sursa (job #3169648)
#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;
}