• 注册
  • 查看作者
  • 关于我花了一下午终于学会Dijkstra算法这档事

    void Dijkstra(MatGraph g,int v)
    {
    int dist[100], flag[100];
    int i, j, k;
    int min = 0;
    for (i = 0; i <= g.n;i++) { //初始化
    flag[i] = 0;
    dist[i] = inf;
    }
    dist[1] = 0;
    for (k = 1;k <= g.n;k++) {
    min = k;
    for (i = 1;i <= g.n;i++) {
    if (flag[i] != 1) {
    if (dist[i] <= dist[min]) {
    min = i;
    }
    }
    }
    for (j = 1;j <= g.n;j++) {
    if (flag[j] != 1) {
    if (g.edges[min][j] != 0&&dist[j]>=g.edges[min][j] + dist[min]) {
    dist[j] = g.edges[min][j]+dist[min];
    }
    }
    }
    flag[min] = 1;
    }
    for (i = 1;i <= g.n;i++) {
    printf("%d ", dist[i]);
    }
    printf("\n");
    }

    海外
  • 7
  • 0
  • 0
  • 50
  • 请登录之后再进行评论

    登录
    单栏布局 侧栏位置:
    关闭窗口
    下载海报