bellman-ford with python
bash-3.2$ cat drg.data | python bellman_ford.py 3 2 0 10000 1 0 2 2
import sys;
lineNum=0;
nodeNum=0;
vetexList = [];
dist = [];
pre = [];
sourceNode = -1;
dataFile = open('drg.data', 'r');
[ nodeNum, sourceNode ] = dataFile.readline().split("\t");
dataFile.close();
print (nodeNum, sourceNode);
nodeNum = int(nodeNum);
sourceNode = int(sourceNode) - 1;
dist = [10000 for i in range(nodeNum)];
pre = [-1 for i in range(nodeNum)];
dist[sourceNode] = 0;
for i in range(1, nodeNum):
dataFile = open('drg.data', 'r');
lineNum==0;
for line in sys.stdin:
line = line.strip("\n");
if lineNum == 0 :
lineNum = 1;
continue;
else : #process edges
[frm, to, wei] = line.split("\t");
frm = int(frm)-1;
to = int(to)-1;
wei = int(wei);
if (dist[frm] + wei < dist[to]):
dist[to] = dist[frm] + wei;
pre[to] = frm;
dataFile.close();
for i in range(len(dist)):
print (i, dist[i]);
dataFile = open('drg.data', 'r');
lineNum==0;
for line in sys.stdin:
line = line.strip("\n");
if lineNum == 0 :
lineNum = 1;
continue;
else : #process edges
[frm, to, wei] = line.split("\t");
if (dist[frm] + wei < dist[to]):
print ("Graph contains a neg-wei cycle");
dataFile.close();
data :
3 2
1 3 1
2 3 2
3 2 3
1 import sys;
2
3
4 lineNum=0;
5 nodeNum=0;
6
7 vetexList = [];
8 dist = [];
9 pre = [];
10 sourceNode = -1;
11
12 dataFile = open('drg.data', 'r');
13 [ nodeNum, sourceNode ] = dataFile.readline().split("\t");
14 dataFile.close();
15 print (nodeNum, sourceNode);
16
17 nodeNum = int(nodeNum);
18 sourceNode = int(sourceNode) - 1;
19 dist = [10000 for i in range(nodeNum)];
20 pre = [-1 for i in range(nodeNum)];
21 dist[sourceNode] = 0;
22
23 for i in range(1, nodeNum):
24 dataFile = open('drg.data', 'r');
25 lineNum==0;
26 for line in sys.stdin:
27 line = line.strip("\n");
28 if lineNum == 0 :
29 lineNum = 1;
30 continue;
31 else : #process edges
32 [frm, to, wei] = line.split("\t");
33 frm = int(frm)-1;
34 to = int(to)-1;
35 wei = int(wei);
36 if (dist[frm] + wei < dist[to]):
37 dist[to] = dist[frm] + wei;
38 pre[to] = frm;
39 dataFile.close();
浙公网安备 33010602011771号