Pagini recente » Cod sursa (job #28857) | Cod sursa (job #2889914) | Cod sursa (job #2210403) | Cod sursa (job #1788813) | Cod sursa (job #2275719)
#include <iostream>
#include <fstream>
#include <vector>
#define nmx 100005
#define inf 2147483647
using namespace std;
ifstream fin("distante.in");
ofstream fout("distante.out");
int n,t,m,s,i,j,nr;
int d[nmx],df[nmx];
vector<pair<int,int>> ad[nmx];
int main() {
fin>>t;
while(t--)
{
fin>>n>>m>>s;
for(i=1;i<=n;i++)
{
fin>>d[i];
df[i]=inf;
while(!ad[i].empty()) ad[i].pop_back();
}
while(m--)
{
fin>>i>>j>>nr;
ad[i].push_back({j,nr});
ad[j].push_back({i,nr});
}
df[s]=0;
for(i=1;i<=n;i++)
for(auto j:ad[i])
df[j.first]=min(df[j.first], d[i]+j.second);
bool ok=1;
for(i=1;i<=n;i++)
if(d[i]!=df[i]) ok=0;
if(ok) fout<<"DA\n";
else fout<<"NU\n";
}
}