Cod sursa(job #876089)

Utilizator noruIlies Norbert noru Data 11 februarie 2013 11:44:07
Problema Ubuntzei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<fstream>
using namespace std;
ifstream f("ubuntzei.in");
ofstream g("ubuntzei.out");
int a[2001][2001],viz[2001],loc[2001],k,n,m,minim,s;
void citire()
{
	f>>n>>m;
	f>>k;
	for (int i=1;i<=k;i++)
		f>>loc[i];
	for (int i=1;i<=m;i++)
	{
		int x,y,c;
		f>>x>>y>>c;
		a[x][y]=c;
		a[y][x]=c;
	}
	viz[1]=1;
}
void dfs(int x)
{
	int i,j;
	viz[x]=1;
	int ok=1;
	if (x==n){
		for (j=1;j<=k;j++)
			if (viz[loc[j]]==0)
			{	ok=0;
				break;
			}
		if (ok==1)
			if (s<minim) minim=s;
	}
	if (x!=4)
		for (i=1;i<=n;i++)
			if (viz[i]==0&&i!=x)
			{	s+=a[x][i];
				dfs(i);
				s-=a[x][i];
			}
	viz[x]=0;
}
int main()
{
	minim=99999999;
	citire();
	dfs(1);
	g<<minim;
	return 0;
}