最长广播响应

标题:最长广播响应 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
某通信网络中有N个网络结点,用1到N进行标识。网络中的结点互联互通,且结点之间的消息传递有时延,相连结点的时延均为一个时间单位。
现给定网络结点的连接关系link[i]={u,v},其中u和v表示网络结点。
当指定一个结点向其他结点进行广播,所有被广播结点收到消息后都会在原路径上回复一条响应消息,请计算发送结点至少需要等待几个时间单位才能收到所有被广播结点的响应消息。


while True:
    try:
        n, m = map(int, input().split())
        ref = {i + 1: {} for i in range(n)}
        for i in range(m):
            u, v = map(int, input().split())
            ref[u][v] = 1
            ref[v][u] = 1
        begin = int(input())
        seen = [0] * (n + 1)
        seen[begin] = 1
        count, q = 0, [begin]
        while True:
            temp = list()
            for item in q:
                for key in ref[item]:
                    if seen[key] == 0:
                        seen[key] = 2
                        temp.append(key)
            if not temp:
                break
            q, count = temp, count + 1
        print(count * 2)

    except:
        break


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务