poj 2472


c提交


#include<stdio.h>
double map[102][102];

void clear(int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{ map[i][j]=-1; }
}
}

double floyed(int n)
{
int i,j,k;
for(k=0;k<n;k++)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(map[i][j]<map[i][k]*map[k][j] && map[i][k]!=-1 && map[k][j]!=-1)
{
map[i][j]=map[i][k]*map[k][j]; }
}
return map[0][n-1];
}

void print(int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf(" %f ",map[i][j]);
}
printf(" ");
}
}

int main()
{
int n,m,i,x,y,w;
while(scanf("%d",&n)!=EOF)
{
if(n==0) break;

clear(n);
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d%d%d",&x,&y,&w);
map[x-1][y-1]=map[y-1][x-1]=w*1.0/100;
}

printf("%0.6lf percent ",floyed(n)*100);
}
}

原文地址:https://www.cnblogs.com/2014acm/p/3905670.html