您的位置:首页 > 编程语言 > Go语言

ZOJ 1655 Transport Goods 【最短路】【Dijkstra】

2011-08-19 09:59 267 查看
//2632380 	2011-08-19 09:58:14 	Accepted 	1655 	C 	10 	160 	ylwh@Unknown
#include <stdio.h>
#define N 101
int main()
{
int n, m, staue

, a, b;
int i, j, k, flag
, now;
double map

, d
, w
, c, ans;
while(scanf("%d%d", &n, &m) != EOF)
{
ans = 0;
for(i=1; i<n; i++)
{
scanf("%lf", &w[i]);
map[i][i] = -1;
staue[i][i] = 0;
d[i] = 0;
flag[i] = 0;
for(j=i+1; j<=n; j++)
{
map[i][j] =map[j][i] = -1;
staue[i][j] = staue[j][i] = 0;
}
}
map

= -1;
staue

= 0;
d
= 1;
for(i=1; i<=m; i++)
{
scanf("%d%d%lf", &a, &b, &c);
if(1 - c > map[a][b])
map[a][b] = map[b][a] = 1 - c;
staue[a][b] = staue[b][a] = 1;
}
now = n;
flag
= 1;
for(i=1; i<n; i++)
{
for(j=1; j<n; j++)
if(staue[now][j] && !flag[j] && d[j] < d[now] * map[now][j] )
d[j] = d[now] * map[now][j];
c = 0;
for(j=1; j<n; j++)
if( !flag[j] && d[j] >= c)
{
c = d[j];
now = j;
}
flag[now] = 1;
}
for(i=1; i<n; i++)
ans += d[i] * w[i];
printf("%.2lf\n", ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c