首页 > 其他 > 详细

leetcode146周赛-5132-颜色最短的交替路径

时间:2019-07-24 10:39:35      阅读:88      评论:0      收藏:0      [点我收藏+]

---恢复内容开始---

题目描述:

技术分享图片

技术分享图片

 

class Solution:
    def shortestAlternatingPaths(self, n: int, red_edges, blue_edges):
        def function(n,r,b):
            result=[[float("inf")]*2 for _ in range(n)]
            result[0]=[0,0]
            r.sort()
            b.sort()
            rdict={}
            bdict={}
            state=0
            for i in range(len(r)):
                if r[i][0] not in rdict:
                    rdict[r[i][0]]=[r[i][1]]
                else:
                    rdict[r[i][0]].append(r[i][1])
            for i in range(len(b)):
                if b[i][0] not in bdict:
                    bdict[b[i][0]]=[b[i][1]]
                else:
                    bdict[b[i][0]].append(b[i][1])
            while state==0:
                state=1
                for i in range(n):
                    if i in rdict:
                        for j in rdict[i]:
                            if result[j][0]>result[i][1]+1:
                                state=0
                            result[j][0]=min(result[j][0],result[i][1]+1)
                    if i in bdict:
                        for j in bdict[i]:
                            if result[j][1]>result[i][0]+1:
                                state=0
                            result[j][1]=min(result[j][1],result[i][0]+1)
            tmpresult=[]
            for i in range(len(result)):
                if min(result[i])==float("inf"):
                    tmpresult.append(-1)
                else:
                    tmpresult.append(min(result[i]))
            return tmpresult
        return function(n,red_edges,blue_edges)

 

leetcode146周赛-5132-颜色最短的交替路径

原文:https://www.cnblogs.com/oldby/p/11236093.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!