ソースを参照

Round 1: Maniac Moving - partial 2

TODO: move to Dijkstra
Gildas Chabot 8 年 前
コミット
2028c11c6e
共有1 個のファイルを変更した13 個の追加10 個の削除を含む
  1. 13 10
      2017.1-RoundOne/c.ManiacMoving.py

+ 13 - 10
2017.1-RoundOne/c.ManiacMoving.py

@@ -1,16 +1,19 @@
1 1
 import numpy as np
2 2
 
3 3
 def shortest(i, j, ABG):
4
-    minis = {}
5
-    for A, B, G in ABG:
6
-        if A != i and B != i:
7
-            continue
8
-        if A == i:
9
-            x = B
10
-        else:
11
-            x = A
12
-        if x not in minis or minis[x] > G:
13
-            minis[x] = G
4
+    visited = {}
5
+    level = 0
6
+    while True:
7
+        L[level] = {}
8
+        for A, B, G in ABG:
9
+            if A != i and B != i:
10
+                continue
11
+            if A == i:
12
+                x = B
13
+            else:
14
+                x = A
15
+            if x not in L[level] or L[level][x] > G:
16
+                L[level][x] = G
14 17
     direct = -1
15 18
     if j in minis:
16 19
         direct = minis[j]