Cod sursa(job #703494)

Utilizator bulgarashtipau andreea bulgarash Data 2 martie 2012 12:37:51
Problema Ubuntzei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<fstream>
using namespace std;
ifstream f("ubuntzei.in");
ofstream g("ubuntzei.out");
int n,m,k,c[200],a[201][201];

int main()
{
f>>n>>m>>k;

for(int i=1;i<=k;i++)f>>c[i];

for(int i=1;i<=m;i++){int x,y;
						f>>x>>y>>a[x][y];a[y][x]=a[x][y];}

for(int t=1;t<=n;t++)
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)if(i!=j && a[i][t]!=0 && a[t][j]!=0)
									if(a[i][j]==0 || a[i][j]>a[i][t]+a[t][j])a[i][j]=a[i][t]+a[t][j];

//for(int i=1;i<=n;i++){
//		for(int j=1;j<=n;j++)g<<a[i][j]<<" ";g<<endl;}
if(k==0){g<<a[1][n]<<"\n";
		}
else{int mini=a[1][c[1]]+a[c[1]][n];
		for(int i=2;i<=k;i++)mini+=a[c[1]][c[i]];
for(int t=2;t<=k;t++){int aux=a[1][c[t]]+a[c[t]][n];
						for(int i=1;i<=k;i++)if(t!=i)aux+=a[c[t]][c[i]];
					if(aux<mini)mini=aux;}
g<<mini<<"\n";
}

f.close();
g.close();
return 0;
}