记录编号 396320 评测结果 AAAAAAAAAA
题目名称 最小花费 最终得分 100
用户昵称 GravatarJustWB 是否通过 通过
代码语言 C++ 运行时间 0.115 s
提交时间 2017-04-18 18:34:22 内存使用 0.35 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
int n,m;
int S,E;
double all[2001];
bool pan[2001];
queue<int> q;
vector<pair<int,int> > R[2001];
int main()
{
	freopen("moneyb.in","r",stdin);
	freopen("moneyb.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		int a,b,c;
		scanf("%d%d%d",&a,&b,&c);
		R[a].push_back(make_pair(b,c));
		R[b].push_back(make_pair(a,c));
	}
	scanf("%d%d",&S,&E);
	q.push(E);pan[E]=1;
	memset(all,127,sizeof(all));
	all[E]=100;
	while(!q.empty())
	{
		int now=q.front();
		q.pop();pan[now]=0;
		for(int i=0;i<R[now].size();i++)
		{
			int a=R[now][i].first;
			double b=1-R[now][i].second/100.0;
			if(all[now]/b<all[a])
			{
				all[a]=all[now]/b;
				if(pan[a]!=1)
				{
					q.push(a);pan[a]=1;
				}
			}
		}
	}
	printf("%.8f",all[S]);
	return 0;
}