Skip to content

Commit 1827cf2

Browse files
committed
added floyd algo
1 parent 25e4d2b commit 1827cf2

File tree

3 files changed

+68
-0
lines changed

3 files changed

+68
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
5
2+
-1
3+
11
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
4 5
2+
1 2 5
3+
1 4 24
4+
2 4 6
5+
3 4 4
6+
3 2 7
7+
3
8+
1 2
9+
3 1
10+
1 4
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#!/bin/python3
2+
3+
import math
4+
import os
5+
import random
6+
import re
7+
import sys
8+
9+
def floyd_warshall(m):
10+
n = len(m)
11+
12+
for k in range(n):
13+
kk = m[k]
14+
for i in range(n):
15+
ii = m[i]
16+
ik = ii[k]
17+
if ik == math.inf:
18+
continue
19+
for j in range(n):
20+
kj = kk[j]
21+
if kj == math.inf:
22+
continue
23+
m[i][j] = min(ii[j], ik + kj)
24+
25+
return m
26+
27+
if __name__ == '__main__':
28+
f = open('../data/floyd-city-of-blinding-lights-001.txt')
29+
30+
n, m = map(int, f.readline().split())
31+
32+
g_matrix = [[math.inf] * n for _ in range(n)]
33+
34+
for _ in range(m):
35+
u,v,w = map(int, f.readline().rstrip().split())
36+
g_matrix[u-1][v-1] = w
37+
38+
for i in range(n):
39+
g_matrix[i][i] = 0
40+
41+
apsp = floyd_warshall(g_matrix)
42+
43+
q = int(f.readline())
44+
45+
for q_itr in range(q):
46+
xy = f.readline().split()
47+
48+
x = int(xy[0])
49+
50+
y = int(xy[1])
51+
52+
if not apsp[x-1][y-1] == math.inf:
53+
print(apsp[x-1][y-1])
54+
else:
55+
print(-1)

0 commit comments

Comments
 (0)