Pagini recente » Cod sursa (job #2866725) | Cod sursa (job #2856263) | Cod sursa (job #2900130) | Cod sursa (job #321085) | Cod sursa (job #593312)
Cod sursa(job #593312)
#include<fstream>
using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");
int a[100][100],n,i,j,m,cost,s,t,x,y,z;
int c[100],c2[100];
void lungime_drumuri()
{
int i,j,k;
for( k = 1 ; k <= n ; k++ )
for( i = 1 ; i <= n ; i++ )
for( j = 1 ; j <= n ; j++ )
if( i != j && j != k && i != k && a[i][k] && a[k][j] && (a[i][j] > a[i][k] + a[k][j] || !a[i][j]) )
a[i][j] =a[i][k] + a[k][j];
}
int main()
{
f>>t;
int gasit=0;
while(t)
{
f>>n>>m>>s;
for(i=1;i<=n;i++)
f>>c[i];
for(i=1;i<=m;i++)
{
f>>x>>y>>z;
a[x][y]=a[y][x]=z;
}
lungime_drumuri();
for(i=1;i<=n;i++)
{
if(c[i]==a[s][i])
gasit=1;
else
gasit=0;
}
if(gasit)
g<<"DA"<<"\n";
else
g<<"NU"<<"\n";
t--;
}
return 0;
}