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

A29801. 下列Dijkstra算法中,横线处应该填入的是( )。typedef struct Edge { int in, out; // 从下标in顶点到下标out顶点的边 int len; // 边长度 struct Edge * next;}Edge;// v:顶点个数,graph:出边邻接表,start:起点下标,dis:输出每个顶点的最短距离void dijkstra(int v, Edge *…

单选题 困难

题目描述

下列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) {

________;// 在此处填入选项

}

}

delete[] visited;

}

选项(单选)

上一题 下一题