[BOJ] Q10159 저울

Question

Language: Python

Difficulty: Gold 3

해당 문제는 1613 문제와 유사한 방식으로 풀면 된다. 서로 비교를 할 수 없다는 건 서로에게 길이 없다는 것을 뜻하기 때문에 floyd-warshall 알고리즘으로 모든 경로를 다 찾아 준 다음 해당 노드에서 도달할 수 없는 노드의 개수를 찾는다.

Solution

from math import inf
def solution():
    for k in range(1,n_vertex+1):
        for i in range(1, n_vertex+1):
            for j in range(1, n_vertex+1):
                if graph[i][j] > graph[i][k]+graph[k][j]:
                    graph[i][j]=graph[i][k]+graph[k][j]


    for i in range(1,n_vertex+1):
        count=0
        for j in range(1,n_vertex+1):
            if i==j:
                continue
            elif graph[i][j] == inf and graph[j][i] == inf:
                count+=1
        print(count)
        
if __name__ == "__main__":
    n_vertex=int(input())
    n_edge=int(input())
    graph=[[inf]*(n_vertex+1) for _ in range(n_vertex+1)]
    for _ in range(n_edge):
        v1,v2=map(int,input().split())
        graph[v1][v2]=1
    solution()

댓글남기기