测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A23847. 下列Dijkstra算法,假设图graph中顶点数 v、边数 e,则程序的时间复杂度为( )。typedef struct Edge { int in, out; // 从下标in顶点到下标out顶点的边 int len; // 边长度 struct Edge *next; } Edge; // v: 顶点个数, graph: 出边邻接表, start: 起点下标, dis: 输出每个顶点的最短…

单选题 困难

题目描述

下列Dijkstra算法,假设图graph中顶点数 v、边数 e,则程序的时间复杂度为(    )。

typedef struct Edge {
    int in, out;  // 从下标in顶点到下标out顶点的边
    int len;      // 边长度
    struct Edge *next;
} Edge;
// v: 顶点个数, graph: 出边邻接表, start: 起点下标, dis: 输出每个顶点的最短距离
void dijkstra(int v, Edge *graph[], int start, int *dis) {
    const int MAX_DIS = 0x7fffffff;
    for (int i = 0; i < v; i++)
        dis[i] = MAX_DIS;
    dis[start] = 0;
    int *visited = new int[v];
    for (int i = 0; i < v; i++)
        visited[i] = 0;
    visited[start] = 1;
    for (int t = 0; ; t++) {
        int min = MAX_DIS, minv = -1;
        for (int i = 0; i < v; i++) {
            if (visited[i] == 0 && min > dis[i]) {
                min = dis[i];
                minv = i;
            }
        }
        if (minv < 0)
            break;
        visited[minv] = 1;
        for (Edge *e = graph[minv]; e != NULL; e = e->next)
            if (dis[e->out] > e->len)
                dis[e->out] = e->len;
    }
    delete[] visited;
}

选项(单选)

上一题 下一题