Cod sursa(job #43219)

Utilizator buradaandreiBurada Andrei buradaandrei Data 29 martie 2007 21:54:17
Problema Drumuri minime Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream.h>
ifstream f("dmin.in");
ofstream g("dmin.out");
int A[20][20],v[20],n;
void df(int vf1,int vf2,int cost)
{
v[vf1]=1;
if (vf1==vf2) {g<<1<<","<<vf2<<"="<<cost<<"\n";return;}
else
for (int i=1;i<=n;i++)
	if(A[vf1][i]&&!v[i])
		{
		df(i,vf2,cost*A[vf1][i]);
		if (vf1==1) return;
		}
}
void bf()
{
int p=1,u=1,c[20]={0};
v[p]=1;
c[p]=1;
while (p<=u)
	{
	int k=c[p++];
	for (int i=1;i<=n;i++)
		if (A[k][i]&&!v[i])
			{
			c[++u]=i;
			v[i]=1;
			}
	}
}
int main()
{
int m,a,b,c;
f>>n>>m;
for (int i=1;i<=m;i++) {f>>a>>b>>c;A[a][b]=A[b][a]=c;}
for (i=2;i<=n;i++)
	{
	for (int j=1;j<=n;j++) v[j]=0;
	df(1,i,1);
	}
f.close();
g.close();
return 0;
}