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();
posted @ 2011-06-28 18:39  enyun  阅读(668)  评论(0编辑  收藏  举报