Pagini recente » Cod sursa (job #125126) | Cod sursa (job #454664) | Cod sursa (job #1555966) | Cod sursa (job #660184) | Cod sursa (job #1731395)
#include <fstream>
#include <vector>
#include <queue>
#define DIM 50005
using namespace std;
int n,m,d[DIM];
vector<pair<int,int> > adj[DIM];
bool checkDist(int s) {
for(int i=1;i<=n;i++) {
int mn=50000000;
if(i==s&&!d[i])
continue;
for(int j=0;j<adj[i].size();j++)
mn=min(mn,d[adj[i][j].first]+adj[i][j].second);
if(mn!=d[i])
return false;
}
return true;
}
int main()
{
ifstream fin("distante.in");
ofstream fout("distante.out");
int t,s,a,b,c;
fin>>t;
for(int i=1;i<=t;i++) {
for(int j=1;j<=n;j++)
adj[j].clear();
fin>>n>>m>>s;
for(int j=1;j<=n;j++)
fin>>d[j];
for(int j=1;j<=m;j++) {
fin>>a>>b>>c;
adj[a].push_back({b,c});
adj[b].push_back({a,c});
}
if(checkDist(s))
fout<<"DA\n";
else
fout<<"NU\n";
}
return 0;
}