牛牛和牛妹在进行一场星球模拟游戏,游戏规则如下: 游戏地图内共有n个星球,共有m条隧道连接这些星球。每条隧道都是双向的,每两个星球间不一定只有一条隧道。现在牛牛占领了这n个星球中的p个星球,牛妹占领了这n个星球中的q的星球(每个星球最多只能被一个人占领)。现在牛牛想知道他占领的p个星球中任意一个星球,到牛妹占领的q个星球中任意一个星球,这两个星球的最短距离是多少。-笔试面试资料

这是qklbishe.com第15551 篇笔试面试资料
提供答案分析,通过本文《牛牛和牛妹在进行一场星球模拟游戏,游戏规则如下: 游戏地图内共有n个星球,共有m条隧道连接这些星球。每条隧道都是双向的,每两个星球间不一定只有一条隧道。现在牛牛占领了这n个星球中的p个星球,牛妹占领了这n个星球中的q的星球(每个星球最多只能被一个人占领)。现在牛牛想知道他占领的p个星球中任意一个星球,到牛妹占领的q个星球中任意一个星球,这两个星球的最短距离是多少。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

牛牛和牛妹在进行一场星球模拟游戏,游戏规则如下:

游戏地图内共有n个星球,共有m条隧道连接这些星球。每条隧道都是双向的,每两个星球间不一定只有一条隧道。现在牛牛占领了这n个星球中的p个星球,牛妹占领了这n个星球中的q的星球(每个星球最多只能被一个人占领)。现在牛牛想知道他占领的p个星球中任意一个星球,到牛妹占领的q个星球中任意一个星球,这两个星球的最短距离是多少。
Python 3

牛牛和牛妹在进行一场星球模拟游戏,游戏规则如下:    游戏地图内共有n个星球,共有m条隧道连接这些星球。每条隧道都是双向的,每两个星球间不一定只有一条隧道。现在牛牛占领了这n个星球中的p个星球,牛妹占领了这n个星球中的q的星球(每个星球最多只能被一个人占领)。现在牛牛想知道他占领的p个星球中任意一个星球,到牛妹占领的q个星球中任意一个星球,这两个星球的最短距离是多少。 ZhongHaoWang

# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # #  # @param serialP int一维数组 牛牛占领的p个星球的编号 # @param serialQ int一维数组 牛妹占领的q个星球的编号 # @param path int二维数组 m条隧道,每条隧道有三个数分别是ui,vi,wi。ui,vi分别是隧道的两边星球的编号,wi是它们之间的距离 # @param nn int 星球个数n # @return int # import collections,heapq class Solution:     def Length(self , serialP , serialQ , path , nn ):         # write code here         edges = collections.defaultdict(set)         dis = {}         p,q = set(),set()         queue = []         for x,y,v in path:             if (x,y) in dis:                 dis[(x,y)] = min(dis[(x,y)],v)                 dis[(y,x)] = min(dis[(y,x)],v)             else:                 edges[x].add(y)                 edges[y].add(x)                 dis[(x,y)] = v                 dis[(y,x)] = v         for i in serialP:             heapq.heappush(queue,[0,i])             p.add(i)         for i in serialQ:             q.add(i)                  d = {}         while queue:             D,cur = heapq.heappop(queue)             if cur in q:                 return D             for next_ in edges[cur]:                 if (cur,next_) not in d&nbs***bsp;d[(cur,next_)] > D + dis[(cur,next_)]:                     d[(cur,next_)] = D + dis[(cur,next_)]                     heapq.heappush(queue,[d[(cur,next_)],next_])         return -1

2021-09-02 22:58:58 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 牛牛和牛妹在进行一场星球模拟游戏,游戏规则如下: 游戏地图内共有n个星球,共有m条隧道连接这些星球。每条隧道都是双向的,每两个星球间不一定只有一条隧道。现在牛牛占领了这n个星球中的p个星球,牛妹占领了这n个星球中的q的星球(每个星球最多只能被一个人占领)。现在牛牛想知道他占领的p个星球中任意一个星球,到牛妹占领的q个星球中任意一个星球,这两个星球的最短距离是多少。-笔试面试资料

提供最优质的资源集合

立即查看 了解详情