| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
WA,难道是精度问题?大家帮忙看看啊:)#include <stdio.h>
#include <memory.h>
#define true 1
#define false 0
#define I 0
#define N 100
double cost[N][N];
double dist[N],max;
int v0,v1;
void main()
{
int final[N],i,v,w,n,m;
while(1)
{
scanf("%d",&n);
if(n==0)break;
scanf("%d",&m);
v0=0;v1=n-1;
memset(cost,0,sizeof(double)*n*n);
for(i=0;i<m;i++)
{
int x,y,rate;
scanf("%d%d%d",&x,&y,&rate);
x--;y--;
if(cost[x][y]!=0)
if(rate<cost[x][y]*100)continue;
cost[x][y]=(double)rate/100;
cost[y][x]=(double)rate/100;
}
for(v=0;v<n;v++)
{
final[v]=false;
dist[v]=cost[v0][v];
}
final[v0] = true;
while(1)
{
max=0;
for(w=0;w<n;w++)
{
if(!final[w]&&dist[w]>max)
{
max=dist[w];
v=w;
}
}
final[v]=true;
if(final[v1]==true)break;
for(w=0;w<n;w++)
{
if(!final[w]&&dist[v]*cost[v][w]>dist[w])
{
dist[w]=dist[v]*cost[v][w];
}
}
}
printf("%.6lf percent\n",dist[v1]*100);
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator