Cod sursa(job #681732)

Utilizator tundeKorodi Tunde tunde Data 17 februarie 2012 18:08:16
Problema Ubuntzei Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <iostream>
using namespace std;
int a[2001][2001],b[2001],v[2001],n,m,kk;
long legjobb=10000000;
bool l[2001];

void ki(int k)
{
	int i,hossz=0;
	for (i=1;i<=k-1;i++)
		hossz=hossz+a[v[i]][v[i+1]];
	if (hossz<legjobb) legjobb=hossz; 
}
int megoldas(int k)
{
	int van=1,i,j;
	if (v[k]!=n) return 0;
	for (i=1;i<=kk && van==1;i++)
		if (l[b[i]]==0) van=0;
	if (van==0) return 0;
	return 1;
}
void back(int k)
{
	int i;
	for (i=2;i<=n;i++)
		if ((a[v[k-1]][i]!=0) && (l[i]==0))
		{
			v[k]=i; l[i]=1;
			if (megoldas(k)) ki(k);
			else back(k+1);
			l[i]=0;
		}
}
int main()
{
	ifstream f("ubuntzei.in",ios::in);
	ofstream g("ubuntzei.out",ios::out);
	int i,x,y,z;
	f>>n>>m;
	f>>kk;
	for (i=1;i<=kk;i++) f>>b[i];
	for (i=1;i<=m;i++)
	{
		f>>x>>y>>z;
		a[x][y]=z;
	}
	v[1]=1; l[1]=1;
	back(2);
	g<<legjobb;
	g.close();
	return 0;
}