인접행렬 구하기

3yeong·2023년 3월 22일
0

algorithm

목록 보기
5/9

문제 정의

강의 때 배운 내용을 이용하여, 가중치가 있는 방향성 그래프가 주어졌을 때 이를 인접 행렬로 표현하는 프로그램을 작성하세요.

방향성 그래프에서 어떤 간선 (u,v,c)
의 의미는 u에서 v로 가는 비용이 c인 간선이 있다는 것을 의미합니다.

입력 형식

입력의 첫 줄에 테스트 케이스의 숫자 t가 주어진다.
각 테스트 케이스마다 입력은 아래와 같다.

첫 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (N≤1,000,M≤20,000)
그 다음 M개의 줄에 걸쳐서 방향성 그래프의 간선 (u,v,c)
가 공백을 사이에 두고 입력된다.
u와 v 둘 다 일치하는 간선은 여러 번 입력되지 않으며, u와 v는 항상 0부터 N−1 사이의 정수이고, c는 자연수이다.

출력 형식

각 테스트 케이스에 대해 입력받은 그래프를 인접 행렬로 표시한 결과를 출력한다.
각 테스트 케이스에서 출력하는 i번째 줄의 j번째 숫자는 간선 (i,j,c)가 존재하면 c를 출력하고, 그렇지 않다면 0을 출력한다.

입력 예시

2
4 6
0 1 3
0 3 7
1 2 2
1 3 5
2 0 3
3 2 3
5 10
0 1 1
0 2 1
0 4 1
1 0 1
1 3 2
1 4 1
2 4 1
3 4 1
4 1 1
4 2 2

출력 예시

0 3 0 7
0 0 2 5
3 0 0 0
0 0 3 0
0 1 1 0 1
1 0 0 2 1
0 0 0 0 1
0 0 0 0 1
0 1 2 0 0

t = int(input())
for _ in range(t):

    N, M = map(int, input().split())

    Matrix = [[0]*N for _ in range(N)]
    for i in range(M):
        u, v, c = map(int, input().split())
        Matrix[u][v] = c

    for i in range(N):
        print(*Matrix[i])
profile
초보 컴공

0개의 댓글