欢迎大家积极在评论区留言发表自己的看法,知无不言,言无不尽,养成每天刷题的习惯,也可以自己发布优质的解题报告,供社区一同鉴赏,吸引一波自己的核心粉丝。
今天是六月集训第二十七天:图🔥🔥🔥🔥🔥
// 1514. 概率最大的路径
class Solution {
#define maxn 10010
struct Edge
{
int to;
double val;
Edge() {}
Edge(int t, double v) : to(t), val(v) {}
};
vector<Edge> edge[maxn];
double bfs(int start, int end) {
double dis[maxn] = {0.0}; //(3)
dis[start] = 1;
queue<int> q;
q.push(start); //(4)
while (!q.empty())
{
int u = q.front();
q.pop();
for(int i = 0; i < edge[u].size(); ++i) {
int v = edge[u][i].to;
double d = dis[u] * edge[u][i].val;
if(dis[v] < d) {
dis[v] = d;
q.push(v);
}
}
} //(5)
return dis[end];
}
public:
double maxProbability(int n, vector<vector<int>>& edges, vector<double>& succProb, int start, int end) {
for(int i = 0; i < edges.size(); ++i) {
if(succProb[i] <= 0) {
continue;
}
int u = edges[i][0];
int v = edges[i][1];
double w = succProb[i];
edge[u].emplace_back(Edge(v, w));
edge[v].emplace_back(Edge(u, w)); //(1)
}
return bfs(start, end); //(2)
}
};