记录编号 54187 评测结果 AAAAAAAAAA
题目名称 [HAOI 2009]旅行 最终得分 100
用户昵称 Gravatarcstdio 是否通过 通过
代码语言 C++ 运行时间 0.120 s
提交时间 2013-03-08 20:07:07 内存使用 5.93 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<queue>
#include<vector>
#include<utility>
#include<algorithm>
#include<iomanip>
using namespace std;
class ROAD{
public:
	int b;//另一个端点
	double p;
};
const int N=10001;
double f[N]={0};
deque<ROAD> c[N];
int n,m;
void SPFA(int s){//SPFA
	//顶点下标是1~n
    queue<int> q;
    bool l[N]={0};l[s]=1;
    fill_n(f,n+1,0);f[s]=1;
    q.push(s);
	int i,j;
    while(!q.empty()){
        int u=q.front();q.pop();
        l[u]=0;
		for(i=0;i<c[u].size();i++){
			j=c[u][i].b;
			if(f[j]<f[u]*c[u][i].p){
				f[j]=f[u]*c[u][i].p;
				if(!l[j]){
					l[j]=true;
					q.push(j);
				}
			}
		}
    }
}
int main(){
	freopen("toura.in","r",stdin);
	freopen("toura.out","w",stdout);
	scanf("%d%d",&n,&m);
	int i,a,b;
	double p;
	ROAD temp;
	for(i=1;i<=m;i++){
		scanf("%d%d%lf",&a,&b,&p);
		temp.b=b,temp.p=p/100;
		c[a].push_back(temp);
		temp.b=a;
		c[b].push_back(temp);
	}
	SPFA(1);
	cout<<setiosflags(ios::fixed)<<setprecision(6)<<f[n]*100<<endl;
	return 0;
}