Pagini recente » Clasamentul arhivei de probleme | Cod sursa (job #120201) | Cod sursa (job #786800) | Cod sursa (job #870526) | Cod sursa (job #2629799)
#include <bits/stdc++.h>
using namespace std;
ifstream ci("distante.in");
ofstream cou("distante.out");
struct date{
int nod,cost;
};
vector<date>v[50005];
int dis[50005];
int dp[50005];
queue<int>q;
int i,a,b,s,m,n,c,t;
void reseteaza(){
for(int i=1;i<=n;i++){
while(!v[i].empty()){
v[i].pop_back();
}
dp[i]=0;
dis[i]=0;
}
while(!q.empty()){
q.pop();
}
}
void Djakstra(){
int w;
w=1;
q.push(w);
while(!q.empty()){
w=q.front();
q.pop();
for(auto i:v[w]){
if(dp[i.nod]>dp[w]+i.cost||dp[i.nod]==0){
dp[i.nod]=dp[w]+i.cost;
q.push(i.nod);
}
}
}
dp[1]=0;
}
void rez(){
Djakstra();
int veri=1;
for(int i=1;i<=n;i++){
if(dp[i]!=dis[i]){
veri=0;
}
}
if(veri==1){
cou<<"DA \n";
}else{
cou<<"NU \n";
}
}
void citire(){
ci>>t;
while(t--){
ci>>n>>m>>s;
for(int i=1;i<=n;i++){
ci>>dis[i];
}
date p;
for(int i=1;i<=m;i++){
ci>>a>>b>>c;
p.cost=c;
p.nod=b;
v[a].push_back(p);
p.nod=a;
v[b].push_back(p);
}
rez();
reseteaza();
}
}
int main()
{
citire();
return 0;
}