GESP C++ 真题 · 逐题精解
首页C++八级真题 › 2025年9月 › 第11题

GESP 2025年9月 C++八级 单选题 第11题

C++八级单选题2025年9月第11题

所属知识点:各类算法复杂度 难度要求:掌握 考频:中频

下列 Dijkstra 算法(每轮线性扫描找最小、出边邻接表松弛),顶点数 v、边数 e,其时间复杂度为:
void dijkstra(int v, Edge * graph[], int start, int * dis) {
    // 初始化 dis[], visited[]
    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;
    }
}

正确答案:A

题目解析
朴素 Dijkstra 每轮 O(v) 找最小、共 v 轮即 O(v²),松弛累计 O(e),总体 O(v²),选 A。

想系统刷完 GESP C++ 1~8 级真题,并查看每道题的逐题精讲?

进入 GESPPASS 开始练习