diff --git "a/problems/0707.350円256円276円350円256円241円351円223円276円350円241円250円.md" "b/problems/0707.350円256円276円350円256円241円351円223円276円350円241円250円.md" index a247b17839..743c1d7fa6 100644 --- "a/problems/0707.350円256円276円350円256円241円351円223円276円350円241円250円.md" +++ "b/problems/0707.350円256円276円350円256円241円351円223円276円350円241円250円.md" @@ -380,10 +380,7 @@ class MyLinkedList { return; } size--; - if (index == 0) { - head = head.next; - return; - } + //因为有虚拟头节点,所以不用对Index=0的情况进行特殊处理 ListNode pred = head; for (int i = 0; i < index ; i++) { pred = pred.next; diff --git "a/problems/kamacoder/0053.345円257円273円345円256円235円-prim.md" "b/problems/kamacoder/0053.345円257円273円345円256円235円-prim.md" index 782bd143dd..18256db81c 100644 --- "a/problems/kamacoder/0053.345円257円273円345円256円235円-prim.md" +++ "b/problems/kamacoder/0053.345円257円273円345円256円235円-prim.md" @@ -521,6 +521,40 @@ int main() { ### Java ### Python +```python +# 接收输入 +v, e = list(map(int, input().strip().split())) +# 按照常规的邻接矩阵存储图信息,不可达的初始化为10001 +graph = [[10001] * (v+1) for _ in range(v+1)] +for _ in range(e): + x, y, w = list(map(int, input().strip().split())) + graph[x][y] = w + graph[y][x] = w + +# 定义加入生成树的标记数组和未加入生成树的最近距离 +visited = [False] * (v + 1) +minDist = [10001] * (v + 1) + +# 循环 n - 1 次,建立 n - 1 条边 +# 从节点视角来看:每次选中一个节点加入树,更新剩余的节点到树的最短距离, +# 这一步其实蕴含了确定下一条选取的边,计入总路程 ans 的计算 +for _ in range(1, v + 1): + min_val = 10002 + cur = -1 + for j in range(1, v + 1): + if visited[j] == False and minDist[j] < min_val: + cur = j + min_val = minDist[j] + visited[cur] = True + for j in range(1, v + 1): + if visited[j] == False and minDist[j]> graph[cur][j]: + minDist[j] = graph[cur][j] + +ans = 0 +for i in range(2, v + 1): + ans += minDist[i] +print(ans) +``` ### Go

AltStyle によって変換されたページ (->オリジナル) /