4074. 铁路与公路

摘要
Title: 4074. 铁路与公路
Tag: floyd
Memory Limit: 64 MB
Time Limit: 1000 ms

Powered by:NEFU AB-IN

Link

4074. 铁路与公路

  • 题意

  • 思路

    最大是400x400的完全图,也就是每两个点,不是铁路就是公路,而且边权为1
    也就是说肯定有一条从1到n的路径,是直通的,边权为1
    另一条就用Floyd来求即可,这样也保证了不会相遇

  • 代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    '''
    Author: NEFU AB-IN
    Date: 2023-03-19 15:17:56
    FilePath: \Acwing\4074\4074.py
    LastEditTime: 2023-03-19 15:32:18
    '''
    read = lambda: map(int, input().split())
    from collections import Counter, deque
    from heapq import heappop, heappush
    from itertools import permutations

    N = int(410)
    INF = int(2e9)
    g1 = [[INF] * N for _ in range(N)]
    g2 = [[INF] * N for _ in range(N)]


    def floyd(g):
    for k in range(1, n + 1):
    for i in range(1, n + 1):
    for j in range(1, n + 1):
    g[i][j] = min(g[i][j], g[i][k] + g[k][j])
    return g[1][n]


    n, m = read()
    for i in range(m):
    u, v = read()
    g1[u][v] = g1[v][u] = 1

    for i in range(1, n + 1):
    for j in range(1, n + 1):
    if i == j:
    g1[i][j] = g2[i][j] = 0
    if g1[i][j] == INF:
    g2[i][j] = g2[j][i] = 1

    ans = max(floyd(g1), floyd(g2))

    print(-1 if ans == INF else ans)

使用搜索:谷歌必应百度