记录编号 |
54187 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[HAOI 2009]旅行 |
最终得分 |
100 |
用户昵称 |
cstdio |
是否通过 |
通过 |
代码语言 |
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;
}