求助,迪杰斯特拉的一个题
  • 板块灌水区
  • 楼主CuSO4_and_5H2O
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/5/5 21:00
  • 上次更新2023/10/28 02:05:37
查看原帖
求助,迪杰斯特拉的一个题
231946
CuSO4_and_5H2O楼主2022/5/5 21:00

三个奇怪的测评结果

一本通全RE

洛谷不开O2

洛谷开o2

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,a,b,z;
bool vis[20001];
double dis[20001],Map[4001][4001],zz;
signed main(){
	cin>>n>>m;
	for(int i=1;i<=2000;++i)
		for(int j=1;j<=2000;++j)
		      Map[i][j]=0x7fffffff;
	for(int i=1;i<=2000;++i) dis[i]=0x7fffffff;
	for(int i=1;i<=m;i++){
		cin>>a>>b>>z;
		zz=(100-z)/100.00;
		
		Map[a][b]=Map[b][a]=zz;
	}	
	cin>>a>>b;
	int k=a,K,Min=1e9;
	vis[a]=1;
	dis[a]=1;
	for(int i=2;i<=n;i++){
		Min=1e9;
		for(int j=1;j<=n;j++){
			if(vis[j]==0 && dis[j]>dis[k]*Map[k][j]){
				dis[j]=dis[k]*Map[k][j];
				if(Min>dis[j]){
					Min=dis[j];
					K=j;
				}
			}
			k=K;
			vis[k]=1;
		}
	}
	printf("%.8lf",100.00/dis[b]);
}

2022/5/5 21:00
加载中...