4244. 牛的比赛

摘要
Title: 4244. 牛的比赛
Tag: floyd传递闭包
Memory Limit: 64 MB
Time Limit: 1000 ms

Powered by:NEFU AB-IN

Link

4244. 牛的比赛

  • 题意

    N 头奶牛,编号 1∼N,一起参加比赛。
    奶牛的战斗力两两不同。
    这些奶牛之间已经进行了 M 轮两两对决。
    在对决中,战斗力高的奶牛一定会战胜战斗力低的奶牛。
    请问,通过上述 M 轮对决的结果,可以确定多少头奶牛的具体战斗力排名。

  • 思路

    floyd传递闭包的板子题,aa战胜bb就相当于aa连向bb了一条有向边

    当某只奶牛确定了排名 相当于 该奶牛和其他n1n - 1头奶牛确定的关系

  • 代码

    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
    '''
    Author: NEFU AB-IN
    Date: 2022-02-12 15:03:48
    FilePath: \ACM\Acwing\4244.py
    LastEditTime: 2022-02-12 15:09:08
    '''

    N = 155
    g = [[0 for _ in range(N)] for _ in range(N)]

    if __name__ == "__main__":
    n, m = map(int, input().split())

    for i in range(1, n + 1):
    g[i][i] = 1
    for i in range(m):
    x, y = map(int, input().split())
    g[x][y] = 1

    for k in range(1, n + 1):
    for i in range(1, n + 1):
    for j in range(1, n + 1):
    if g[i][k] and g[k][j]:
    g[i][j] = 1

    res = 0
    for i in range(1, n + 1):
    cnt = 0
    for j in range(1, n + 1):
    if g[i][j] or g[j][i]:
    cnt += 1
    if cnt == n:
    res += 1

    print(res)
使用搜索:谷歌必应百度