第五题不知哪里出问题,总是50%,不是时间复杂度和空间复杂度问题,总是出现语法错误和数组越界,是输入问题吗?求解

def dfs(item, temp_dict, result):
    if item in result:
        return
    result.add(item)
    for x in temp_dict[item]:
        dfs(x, temp_dict, result)


if __name__ == "__main__":

    import sys
    N = int(sys.stdin.readline().strip())
    M = int(sys.stdin.readline().strip())
    if M > 0:
        line = sys.stdin.readline().strip()
        relation = list(map(int, line.split()))
        bucket = {}
        for i in range(0, 2 * M, 2):
            if relation[i + 1] not in bucket:
                bucket[relation[i + 1]] = []
            bucket[relation[i + 1]].append(relation[i])
        cnt = 0
        for key in bucket.keys():
            a = set()
            dfs(key, bucket, a)
            a.add(key)
            if len(a) == N:
                cnt += 1
        print(cnt)
    else:
        print(N)