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

转载于:https://www.cnblogs.com/enyun/archive/2011/06/28/2092545.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值