【題解】ZeroJudge d198: 00825 – Walking on the Safe Side

【題目敘述】https://zerojudge.tw/ShowProblem?problemid=d198

num = int(input())
for k in range(num):
    input()
    n, m = map(int, input().split())
    grid = [[]]*n
    for i in range(n):
        lst = list(map(int, input().split()))
        temp, lst = lst[0], lst[1:]
        grid[temp-1] = lst
    if 1 in grid[0] or m in grid[-1]:
        print(0)
        continue
    for i in range(m):
        if (i+1) in grid[0]:
            lst = [1] * i + [0] * (m-i)
            break 
    else:
        lst = [1] * m
    for i in range(1, n):
        if lst[0] == 1 and 1 in grid[i]:
            lst[0] = 0
        for j in range(1, m):
            if (j+1) in grid[i]:
                lst[j] = 0
            else:
                lst[j] += lst[j-1]
    print(lst[-1])
分享本文 Share with friends