文章

226

粉丝

165

获赞

364

访问

108.8k

头像
安全路径 题解:
P1665 中南大学机试题
发布于2026年3月5日 20:37
阅读数 85

#include <iostream>
#include <iomanip>
using namespace std;

const int MAXN = 1005;
double graph[MAXN][MAXN];
double dist[MAXN];
bool visited[MAXN];

void dijkstra(int start, int n) {
    // 初始化距离数组和访问标记数组
    for (int i = 1; i <= n; ++i) {
        dist[i] = 0.0;
        visited[i] = false;
    }
    dist[start] = 1.0; // 起点到自身的安全系数为1

    for (int i = 0; i < n; ++i) {
        // 找到未被访问的节点中安全系数最大的节点
        int u = -1;
        double max_dist = 0.0;
        for (int j = 1; j <= n; ++j) {
            if (!visited[j] && dist[j] > max_dist) {
                max_dist = dist[j];
                u = j;
            }
        }
        if (u == -1) break; // 没有可访问的节点,提前退出
        visited[u] = true;

        // 松弛所有邻接边
        for (int v = 1; v <= n; ++v) {
            if (graph[u][v] > 0 && !visited[v] && dist[v] < dist[u] * graph[u][v]) {
                dist[v] = dist[u] * graph[u][v];
          ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发