Cod sursa(job #1120571)

Utilizator HDT_TibiHudema Dumitru Tiberiu HDT_Tibi Data 25 februarie 2014 08:36:38
Problema Ubuntzei Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#define NMAX 999999999;
using namespace std;

ifstream fin("ubuntzei.in");
ofstream fout("ubuntzei.out");

int a[2001][2001],n,m,l,loc[16],s;

void initializare()
{
	int i,j;
	for(i=1; i<=n; i++)
		for(j=1; j<=n; j++)
			a[i][j]=NMAX;
	for(i=1;i<=n; i++)a[i][i]=0;
}

int main()
{
	int i,j,k,x,y,c,mini,q;
	fin>>n>>m>>l;
	for(i=1; i<=l; i++)fin>>loc[i];
	initializare();
	for(i=1; i<=m; i++)
	{
		fin>>x>>y>>c;
		a[x][y]=c;a[y][c]=c;
	}
	for(k=1;k<=n; k++)
		for(i=1;i<=n;i++)
			for(j=1;j<=n;j++)
				if(a[i][j]>a[i][k]+a[k][j])
					a[i][j]=a[i][k]+a[k][j];
	k=1;
	for(x=1;x<=l;x++)
	{
		mini=NMAX;
		for(i=1; i<=l; i++)
			if(loc[i] and a[k][loc[i]]<mini) {mini=a[k][loc[i]];q=i;}
		s+=a[k][loc[q]];
		k=q;
		loc[q]=0;
	}
	fout<<s+a[k][n];
	return 0;
}