Cod sursa(job #590699)

Utilizator elielisorElena Eli elielisor Data 19 mai 2011 14:11:42
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<fstream>
using namespace std;
int t,n,m,s,i,j,x,y,cost,minim,nr,nr1,ok;
long a[2000][2000],c[501],c1[501];
int main()
{
	ifstream f("distante.in");
	ofstream g("distante.out");
	f>>t;
	minim=10000;
	while(t)
	{
		f>>n>>m>>s;
		for(i=1;i<=n;++i)
			f>>c[i];
		for(;m;--m)
		{
			f>>x>>y>>cost;
			a[x][y]=cost;
			a[y][x]=cost;
		}
		for(j=1;j<=n;j++)
			if(j!=s && a[s][j]!=0)
				c1[j]=a[s][j];
			else
			if(j!=s && a[s][j]==0)
				{
					nr=j;
					for(j=1;j<=n;j++)
					{
						if(a[s][j]<minim&&a[s][j]!=0)
						
							if(a[j][nr]!=0)
							{
								minim=a[s][j];
							nr1=j;
							}
						
					}
					c1[nr]=minim+a[nr1][nr];
				}
		for(i=1;i<=n;i++)
		{
			 if(c[i]==c1[i])
                ok=1;
			else
				ok=0;
		}
		if(ok==1)
			g<<"Da";
		else
			if(ok==0)
			g<<"Nu";
	   for(i=1;i<=n;i++)
			for(j=1;j<=n;j++)
			a[i][j]=0;
	   g<<"\n";
	   t--;
	}
}