记录编号 385126 评测结果 AAAAAAAAAA
题目名称 [HAOI 2009]旅行 最终得分 100
用户昵称 GravatarHeHe 是否通过 通过
代码语言 C++ 运行时间 0.005 s
提交时间 2017-03-20 11:09:01 内存使用 0.26 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<vector>
using namespace std;

#define is_num(tmp) (tmp<='9' and tmp>='0')
#define MAXN 10000+10

inline int in(void){
	char tmp = getchar();
	int res = 0, f = 1;
	while(!(is_num(tmp) || tmp == '-'))tmp = getchar();
	if(tmp == '-')f=-1, tmp = getchar();
	while(is_num(tmp))
		res = (res<<1) + (res<<3) + (tmp^48),
		tmp = getchar();
	return res * f;
}

struct DATA{
	int to;
	double k;
	
	DATA(int a, int b){
		to=a, k=b*1.0/100;
	}
};

double SPFA(int sta, int end);

vector<DATA>Map[MAXN];
queue<int>que;
int N, M;
int a, b, c;
bool exist[MAXN];
double dis[MAXN];

void *Main(void){
#ifndef LOCAL
	freopen("toura.in", "r", stdin);
	freopen("toura.out", "w", stdout);
#endif

	N=in(), M=in();
	for(int i=1; i<=M; ++i){
		a=in(), b=in(), c=in();
		Map[a].push_back(DATA(b, c));
		Map[b].push_back(DATA(a, c));
	}
	printf("%.6lf", SPFA(1, N));
	return NULL;
}
void *Main_(Main());
int main(){;}

double SPFA(int sta, int end){
	int now, to;
	double v, tmp;
	
	memset(dis, -127, sizeof(dis));
	memset(exist, 0, sizeof(exist));
	
	dis[sta]=1;
	que.push(sta);
	exist[sta]=true;
	
	while(!que.empty()){
		now=que.front();
		que.pop();
		exist[now]=false;
		for(int i=0; i<Map[now].size(); ++i){
			to = Map[now][i].to, v = Map[now][i].k;
			if((tmp=dis[now]*v)>dis[to]){
				dis[to]=tmp;
				if(!exist[to]){
					que.push(to);
					exist[to]=true;
				}
			}
		}
	}
	return dis[end]*100;
}