[求助]python3代码,样例2本地运行结果正常,OJ报WA
  • 板块P1347 排序
  • 楼主astupidfly
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/7/4 11:07
  • 上次更新2023/11/3 11:40:52
查看原帖
[求助]python3代码,样例2本地运行结果正常,OJ报WA
136490
astupidfly楼主2023/7/4 11:07

如题,试过使用python3.6和python3.11,代码在本地均运行正常,但同样的数据在OJ WA。 代码:

def main():

    def topo_sort():

        from collections import deque
        from copy import copy

        local_vertex_in_degree = copy(vertex_in_degree)
        zero_degree_vertexes = deque()
        res = ""

        for vertex in local_vertex_in_degree.keys():
            if local_vertex_in_degree[vertex] == 0:
                zero_degree_vertexes.append(vertex)

        max_number_of_vertex_with_same_in_degree = 0
        visited_num = 0

        while len(zero_degree_vertexes) > 0:
            max_number_of_vertex_with_same_in_degree = max(
                len(zero_degree_vertexes), max_number_of_vertex_with_same_in_degree
            )

            for _ in range(len(zero_degree_vertexes)):
                current_vertex = zero_degree_vertexes.popleft()
                visited_num += 1
                res += current_vertex
                for vertex in graph[current_vertex]:
                    local_vertex_in_degree[vertex] -= 1
                    if local_vertex_in_degree[vertex] == 0:
                        zero_degree_vertexes.append(vertex)

        if visited_num < len(local_vertex_in_degree):
            max_number_of_vertex_with_same_in_degree = 0

        if max_number_of_vertex_with_same_in_degree == 0:
            ret_code = 0
        elif max_number_of_vertex_with_same_in_degree == 1:
            ret_code = 1
        else:
            ret_code = 2

        return ret_code, res

    n, m = list(map(int, input().split()))

    graph = dict()
    vertex_in_degree = dict()

    for i in range(1, m+1):
        input_list = input().split(sep='<')
        va, vb = input_list
        for it in input_list:
            if it not in graph:
                graph[it] = set()
                vertex_in_degree[it] = 0

        if vb not in graph[va]:
            vertex_in_degree[vb] += 1
        graph[va].add(vb)

        code, ans = topo_sort()

        if code == 0:
            print(f"Inconsistency found after {i} relations.")
        elif code == 1 and len(ans) == n:
            print(f"Sorted sequence determined after {i} relations: {ans}.")
        else:
            continue
        exit()

    print("Sorted sequence cannot be determined.")


if __name__ == '__main__':
    main()

样例2:

4 6
C<D
C<B
B<A
C<D
D<A
A<A

结果:

Inconsistency found after 6 relations.
2023/7/4 11:07
加载中...