Pagini recente » Statistici alexandra g (alegal2100) | Istoria paginii runda/ret1 | Rating Sarbu Alex (azza) | Cod sursa (job #1073025) | Cod sursa (job #2866614)
///dijkstra cu set
#include<bits/stdc++.h>
#define INF 1000000000
using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");
int t,n,m,a[50002],d[502];
vector< pair<int,int> >v[50002];
set<int>s;
void dijkstra(int nodsursa)
{
int i;
for(i=1;i<=n;i++)
d[i]=INF;
d[nodsursa]=0;
s.insert(nodsursa);
while(!s.empty())
{
int nod=*s.begin();
s.erase(nod);
for(auto it:v[nod])
{
int nod1=it.first;
int c=it.second;
if(d[nod1]>d[nod]+c)
{
d[nod1]=d[nod]+c;
s.insert(nod1);
}
}
}
}
int main()
{
int i,l,nodsursa,x,y,z,ok;
f>>t;
for(l=1; l<=t; l++)
{
f>>n>>m>>nodsursa;
for(i=1; i<=n; i++)
f>>a[i];
for(i=1; i<=m; i++)
{
f>>x>>y>>z;
v[x].push_back(make_pair(y,z));
v[y].push_back(make_pair(x,z));
}
dijkstra(nodsursa);
for(i=1;i<=n;i++)
{
if(d[i]==INF)
d[i]=0;
}
ok=0;
for(i=1;i<=n;i++)
{
if(a[i]!=d[i])
{
ok=1;
break;
}
}
if(ok==1)
g<<"NU"<<'\n';
else
g<<"DA"<<'\n';
}
return 0;
}