她奇妙地wa了
  • 板块灌水区
  • 楼主Sgt_
  • 当前回复12
  • 已保存回复13
  • 发布时间2024/9/2 19:57
  • 上次更新2024/9/3 11:04:45
查看原帖
她奇妙地wa了
1223722
Sgt_楼主2024/9/2 19:57

本地测得数据点是对的,但是交上去全红力(悲

https://www.luogu.com.cn/problem/P1576

是精度问题么?

#include<bits/stdc++.h>
using namespace std;
#define maxn 2005
int n,m,A,B;
struct node{
	int to;long double w;
};
struct node2{
	int pos;long double dis;
	bool operator <(const node2 &b)const{
		return dis<b.dis;
	}
};
long double dis[maxn];
int use[maxn];
priority_queue<node2>q;
vector<node>p[maxn];
void dijkstra(int sx){
	for(int i=0;i<=maxn;i++)dis[i]=0;
	q.push((node2){sx,1});
	dis[sx]=1;
	while(!q.empty()){
		node2 now=q.top();q.pop();
		int u=now.pos;
		if(use[u])continue;
		use[u]=1;
		for(int i=0;i<p[u].size();i++){
			int v=p[u][i].to;
			if(dis[v]<dis[u]*p[u][i].w){
				dis[v]=dis[u]*p[u][i].w;
				q.push((node2){v,dis[v]});
			}
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int x,y;double z;
		cin>>x>>y>>z;
		p[x].push_back((node){y,1.0-z*0.01});
		p[y].push_back((node){x,1.0-z*0.01});
	}
	cin>>A>>B;
	dijkstra(A);
	printf("%.8Lf",100/dis[B]);
	return 0;
}
2024/9/2 19:57
加载中...