社区讨论

已AC,求解释

P1576最小花费参与者 3已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@m5iarkjo
此快照首次捕获于
2025/01/04 22:46
去年
此快照最后确认于
2025/11/04 11:58
4 个月前
查看原帖
rt,这份代码用的是dijkstra,但最慢点有913ms,感觉不太对
CPP
#include<bits/stdc++.h>
#define maxn 2005
typedef double db;
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
int n;
int m;
struct node{
	int u;
	db w;
	bool operator < (node t)const{
		return w>t.w;
	}
};
struct edge{
	int v;
	db w;
};
int s,t;
db dis[maxn];
bool vis[maxn];
vector<edge>e[maxn];
priority_queue<node>q;
void dijkstra_2(){
	vis[s]=1;
	dis[s]=1;
	q.push({s,1});
	while(!q.empty()){
		int u=q.top().u;
		q.pop();
		vis[u]=1;
		for(auto v:e[u]){
			if(dis[u]*v.w>dis[v.v]){
				dis[v.v]=dis[u]*v.w;
				q.push({v.v,dis[v.v]});
			}
		}
	}
	return;
}
int main(){
	cin>>n>>m;
	for(int i=1,u,v,w;i<=m;i++){
		cin>>u>>v>>w;
		db t=(100-w)/100.0;
		e[v].push_back({u,t});
		e[u].push_back({v,t});
	}
	cin>>s>>t; 
	dijkstra_2();
	printf("%.8lf\n",(100/dis[t])); 
	return 0;
}

回复

6 条回复,欢迎继续交流。

正在加载回复...