首页 / 客观题库

Q80632 - 最短路3

题目( 单选题 )

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

   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 = 0x7fffff;

       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;

   }

A $O(v^2)$

B $O(vlogv+e)$

C $O((v+e)logv)$

D $O(v+e)$

意见反馈

    最多上传3张图片,格式为JPG、PNG、JPEG,单张不超过5MB

    注册

    发送验证码

    密码必须包含数字、字母和特殊字符

    找回密码

    发送验证码

    密码必须包含数字、字母和特殊字符

    运行 ID:67149

    • 测试点1:Accepted
    • 用时:0 ms
    • 内存:288 kb
    • 测试点2:Accepted
    • 用时:0 ms
    • 内存:288 kb
    输入
    203
    输出
    203

    test

    测评信息

    错误.in文件下载

    错误.out文件下载

    运行 ID:67149

    2019-01-24 15:06:36