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 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();
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();