Cod sursa(job #593312)

Utilizator elielisorElena Eli elielisor Data 2 iunie 2011 11:22:43
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#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;
}