社区讨论
已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 条回复,欢迎继续交流。
正在加载回复...