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("\n");
}
}
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\n",floyed(n)*100);
}
}
时间: 2024-10-10 10:30:13