Pagini recente » Cod sursa (job #301680) | Cod sursa (job #2642248)
#include<bits/stdc++.h>
using namespace std;ifstream fin("distante.in");ofstream fout("distante.out");int main(){int t;fin>>t;while(t--){int n,m,s;fin>>n>>m>>s;vector<int>dist(n+1),viz(n+1);vector<vector<pair<int,int>>>G(n+1);for(int i=1;i<=n;++i)fin>>dist[i];for(int i=1;i<=m;++i){int a,b,c;fin>>a>>b>>c;G[a].push_back({b,c});G[b].push_back({a,c});}bool dijkstra=true;if(dist[s]==0)viz[s]=1;if(dijkstra)for(int x=1;x<=n;++x){for(auto it:G[x]){int y=it.first;int c=it.second;if(dist[x]+c<dist[y])dijkstra=false;if(dist[x]+c==dist[y])viz[y]=1;}}for(int i=1;i<=n;++i)if(viz[i]==0)dijkstra=false;if(dijkstra)fout<<"DA\n";else fout<<"NU\n";}return 0;}