记录编号 53755 评测结果 AAAAAAAAAA
题目名称 [HAOI 2009]旅行 最终得分 100
用户昵称 Gravatarfeng 是否通过 通过
代码语言 C++ 运行时间 0.072 s
提交时间 2013-03-05 11:09:31 内存使用 12.20 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;
struct node{
	int s,nex;
}a[40100];
struct edge{
	int y,nex;
	double v;
}e[800000];
int n,m,p;
double dis[40010];
bool f[40010];
int queue[100000];
void SPFA(){
	int s=1;
	int t;
	int tmp;
	memset(f,true,sizeof(f));
	memset(dis,0,sizeof(dis));
	memset(queue,0,sizeof(queue));
	f[s]=false;
	dis[s]=1;
	int head=0;
	int tail=1;
	queue[tail]=s;
	while (head<=tail){
		head++;
		tmp=queue[head];
		f[tmp]=true;
		t=a[tmp].nex;
		for (int i=1;i<=a[tmp].s;i++){
			if (dis[tmp]*e[t].v>dis[e[t].y]){
				dis[e[t].y]=dis[tmp]*e[t].v;
				if (f[e[t].y]){
					f[e[t].y]=false;
					queue[++tail]=e[t].y;
				}
			}
			t=e[t].nex;
		}
	}
}
void add(int x,int y,int v){
	p++;
	double tmp;
	tmp=v;
	tmp/=100;
	a[x].s++;
	e[p].y=y;
	e[p].v=tmp;
	e[p].nex=a[x].nex;
	a[x].nex=p;
}
void init(){
	freopen("toura.in","r",stdin);
	freopen("toura.out","w",stdout);
	scanf("%d%d",&n,&m);
	int x,y,v;
	for (int i=1;i<=m;i++){
		scanf("%d%d%d",&x,&y,&v);
		add(x,y,v);
		add(y,x,v);
	}
}
void work(){
	SPFA();
	dis[n]*=100;
	printf("%.6lf",dis[n]);
}
int main(){
	init();
	work();
	return 0;
}