Re: [閒聊] 每日leetcode
引述《enmeitiryous (enmeitiryous)》
題目:
1514. Path with Maximum Probability
給你一個圖有n個點,並給你一個vector:edge,每一個edge(u,v)的weight是從
u到v的成功機率(0<=w<=1),給定起始點s和終點d,求s到d的成功率最大路徑
思路:
因為是無向圖
比較姆咪一點
我用Dijkstra's
每次都往四周看
然後把可以走的地方丟到pq裡面
這次有記得用priority queue 了
丟進去一直邊走邊看就可以了
姆咪
```cpp
class Solution {
public:
double maxProbability(int n, vector<vector<int>>& edges, vector<double>& suc
cProb, int start_node, int end_node)
{
vector<vector<pair<int,double>>> path(n);
vector<double> paper(n,0);
int len = edges.size();
for(int i = 0 ; i < len ; i ++)
{
path[edges[i][1]].push_back({edges[i][0] , succProb[i]});
path[edges[i][0]].push_back({edges[i][1] , succProb[i]});
}
priority_queue<pair<double,int>> pq;
pq.push({1,start_node});
while(!pq.empty())
{
int dest = pq.top().second;
double prob = pq.top().first;
pq.pop();
if(paper[dest] >= prob)continue;
if(dest == end_node)return prob;
paper[dest] = prob;
for(auto k : path[dest])
{
int next = k.first;
double nextprob = k.second;
pq.push({prob*nextprob , next});
}
}
return paper[end_node];
}
};
```
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.18.201 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1724729711.A.C9A.html
推
08/27 11:36,
1年前
, 1F
08/27 11:36, 1F
→
08/27 11:37,
1年前
, 2F
08/27 11:37, 2F
→
08/27 11:38,
1年前
, 3F
08/27 11:38, 3F
推
08/27 11:39,
1年前
, 4F
08/27 11:39, 4F

→
08/27 11:39,
1年前
, 5F
08/27 11:39, 5F
→
08/27 11:40,
1年前
, 6F
08/27 11:40, 6F
→
08/27 11:40,
1年前
, 7F
08/27 11:40, 7F
→
08/27 11:40,
1年前
, 8F
08/27 11:40, 8F
→
08/27 11:41,
1年前
, 9F
08/27 11:41, 9F
→
08/27 11:41,
1年前
, 10F
08/27 11:41, 10F

→
08/27 11:41,
1年前
, 11F
08/27 11:41, 11F
→
08/27 11:42,
1年前
, 12F
08/27 11:42, 12F
→
08/27 11:45,
1年前
, 13F
08/27 11:45, 13F
推
08/27 11:47,
1年前
, 14F
08/27 11:47, 14F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 770 之 1549 篇):