Pagini recente » Cod sursa (job #1046167) | Cod sursa (job #2703203) | Cod sursa (job #2395453) | Cod sursa (job #252931) | Cod sursa (job #825559)
Cod sursa(job #825559)
#include<fstream>
#include<vector>
#include<queue>
#define mp make_pair
#define INF 0x3f3f3f
using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");
int n,m,T,s,d[100];
vector<int> dist;
vector<pair<int,int > > G[100];
queue<int> q;
void citire();
int main()
{
citire();
return 0;
}
void citire()
{
f>>T;
while(T)
{
f>>n>>m>>s;
for(int k=1;k<=n;k++)
f>>d[k];
for(int x,y,c;m;--m)
{
f>>x>>y>>c;
G[x].push_back(mp(y,c));
}
int k,i;
dist.resize(n+1,INF);
dist[s]=0;
q.push(s);
while(!q.empty())
{
k=q.front();
for(i=0;i<G[k].size();i++)
if(dist[G[k][i].first]>dist[k]+G[k][i].second)
{
dist[G[k][i].first]=dist[k]+G[k][i].second;
q.push(G[k][i].first) ;
}
q.pop();
}
int gasit;
for(i=1;i<=n;i++)
if(dist[i]!=d[i])
gasit=1;
if(gasit==1)
g<<"NU\n";
else
g<<"DA\n";
T--;
}
}