国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > python最短路径问题的介绍

python最短路径问题的介绍

python最短路径

头像

小妮浅浅

2021-09-16 09:36:133790浏览 · 0收藏 · 0评论

说明

1、最短路径问题是图论研究中的经典算法问题,用于计算从一个顶点到另一个顶点的最短路径。

2、最短路径问题有几种形式:确定起点的最短路径,确定终点的最短路径,确定起点和终点的最短路径,全局最短路径问题。

路径长度是将每个顶点到相邻顶点的长度记为1,而不是指两个顶点之间的道路距离——两个顶点之间的道路距离是连接边的权利。

实例

def findMin(row):
    minL = max(row)
    for i in row:
        if i != -1 and minL > i:
            minL = i
    return minL
def initRow(row, plus):
    r = []
    for i in row:
        if i != -1:
            i += plus
        r.append(i)
    return r
 
def getMinLen(table, e, t):
    count = len(table) - 1
    startPoint = 1
    #记录原点到各点最短距离 初始值为-1,即不可达
    lenRecord = list((-1 for i in range(count+1)))
    lenRecord[startPoint] = 0
    #记录每次循环的起点
    points = [startPoint]
    #已得到最短距离的点
    visited = set()
    while len(points)>0:
        #当前起点
        curPoint = points.pop()
        #原点到当前起点的距离
        curLen = lenRecord[curPoint]
        #当前起点到各点的距离
        curList = initRow(table[curPoint], t)
        #当前起点到各点的最短距离
        curMin = findMin(curList)
        visited.add(curPoint)
        idx = 0
        while idx<count:
            idx += 1
            #当前点不可达或到当前点的最短距离已计算出 则跳过
            if curList[idx] == -1 or idx in visited:
                continue
            #记录距离当前起点最近的点作为下次外层循环的起点
            if curList[idx] == curMin:
                points.append(idx)
            #如果从原点经当前起点curPoint到目标点idx的距离更短,则更新
            if lenRecord[idx] == -1 or lenRecord[idx] > (curLen+curList[idx]):
                lenRecord[idx] = curLen+curList[idx]
    return lenRecord[e]
 
def processInput():
    pointCnt, roadCnt, jobCnt = (int(x) for x in raw_input().split())
    table = []
    for i in range(pointCnt+1):
        table.append([-1] * (pointCnt+1))
    for i in range(roadCnt):
        (x, y, w) = (int(n) for n in raw_input().split())
        if table[x][y] == -1 or table[x][y] > w:
            table[x][y] = w
            table[y][x] = w
    res = []
    for i in range(jobCnt):
        e, t = (int(x) for x in raw_input().split())
        res.append(getMinLen(table, e, t))
    for i in res:
        print(i)
 
processInput()

以上就是python最短路径问题的介绍,希望对大家有所帮助。更多Python学习指路:python基础教程

本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

妈妈你真棒插曲快来救救我电影| 女性左腿又开腿肚子视频大全| 亚洲AV成人片无码WWW| 麻豆视频| 姨母的绣感中字3| 肉多到炸的年下小狗(双南)| 赵局长含着小婷的双乳| 砂浆强度等级| 《请好好疼爱里面》免费观看| 《男医生的特殊治疗》| 狗配女人宝典视频| 一前一后三个人一起的游戏规则 | 明明说好的只蹭蹭苦苦恳求歌词| 黑料不迷路万里长征| 漫蛙漫画(网页入口)| 《麦子的秘密2》在线观看| B站暴躁女RAPPER| 憋尿白丝小肚子凸起高冷知乎| 性之剧毒 电影| EXO妈妈MV高清在线观看 | 孝子提枪入母门| BL 电影| 丁香花影院免费观看电视剧哈尔滨| 村长撕开乳罩吸奶头在线观看| 在床上怎么骚一点| 百度网址| 扌雷辶鬲的小说章节| 亚洲AV少妇高潮嗷嗷叫| YY漫画首页登录入口页面在哪里| お母さんは母のがいない怎么读| 年轻的母亲4| 混合交换5HD| 上海吃奶门| 性生交大片免费观看A片| AAAA级毛皮的标准色卡| 有夫之妇精油按摩的功效与作用| 双飞娘俩国语免费观看视频| 八戒八戒电影在线看免费观看8| 共享玩物(N)笔趣阁二狗| 《麦子的秘密2》| 《玉尺经》完整版