#68
인접 행렬
채점 준비중
시간 제한
1000ms
메모리 제한
256MB
제출
33
정답
24
맞힌 사람
24
정답 비율
72.7%
<div style="text-align:center"> <img src="/media/martor/c37bd324-e1a1-4328-b602-88b7cb4472c7.png" alt="그래프 예시"> </div>

그래프는 정점과 정점을 잇는 간선으로 정의된 자료 구조이다. 그림으로 그래프를 표현할 때, 정점은 보통 원으로 표현하고 간선은 원을 잇는 선으로 표현한다. 위 그래프에서 정점은 1, 2, 3, 4, 5, 6이고 간선은 ~(1, 2), (1, 5), (2, 3), (2, 5), (3, 4), (4, 5), (4, 6)~이다.

수학적으로는 그래프를 위와 같이 정의할 수 있으나, 실제 프로그램으로 그래프를 저장하는 방법은 여러 가지가 있다. 인접 행렬(Adjacency matrix)이란 그러한 방법 중 하나로, 행렬(2차원 배열)을 통해서 그래프를 표현하는 방법이다. 예를 들어 2차원 배열 adj[i][j]를 정의한 후에 그래프에서 정점 u에서 v를 잇는 간선이 있다면 adj[i][j] = 1 아니면 adj[i][j] = 0을 저장하게 하면 된다.

<div style="text-align:center"> <img src="/media/martor/25efe488-4e26-4c27-9bca-c20b539a58ed.png" alt="인접 행렬 예시" style="max-width:400px; max-height:300px;"> </div>

예를 들어 위 그래프의 간선을 모두 저장하고 난 후의 인접 행렬(Adjacency matrix)은 위와 같다. 위 그래프의 간선은 방향이 없기 때문에 adj[i][j] = 1이라면 반대로 adj[j][i] = 1이다.

그래프가 주어질 때, 이를 인접 행렬(Adjacency matrix)로 표현해보자.

입력

첫째 줄에 그래프의 정점의 개수와 간선의 개수 ~N, M(1 \le N, M \le 50)~이 주어진다. 그래프의 각 정점에는 1부터 N까지 번호가 매겨져 있다.

둘째 줄부터 M개의 줄에 그래프의 간선이 주어진다. 간선은 서로 다른 두 정점 ~u, v(1 \le u, v \le N)~를 잇는다. 주어지는 그래프는 단순 그래프(Simple graph)이다. 따라서 두 정점을 잇는 간선은 최대 한 개 존재할 수 있으며, 자기 자신을 잇는 간선은 없다.

출력

주어진 그래프를 표현한 인접 행렬(Adjacency matrix)을 출력한다.

예제 입력 1

6 7
1 2
1 5
2 3
2 5
3 4
4 5
4 6

예제 출력 1

0 1 0 0 1 0
1 0 1 0 1 0
0 1 0 1 0 0
0 0 1 0 1 1
1 1 0 1 0 0
0 0 0 1 0 0

예제 입력 2

4 2
1 2
2 3

예제 출력 2

0 1 0 0
1 0 1 0
0 1 0 0
0 0 0 0

예제 입력 3

5 10
1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
4 5

예제 출력 3

0 1 1 1 1
1 0 1 1 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 0

노트

N \times N 크기의 2차원 배열을 선언한 후에 M개의 간선을 입력받으면서 배열을 채워줍니다.

배열은 0으로 초기화한 후에 간선으로 ~(u, v)~가 주어지면 adj[i][j]1을 대입합니다. 반대도 마찬가지로 대입해줘야 함에 유의합니다.

코드 제출
로딩 중...
내 제출
아직 제출 내역이 없습니다.
맞은 사람
순위사용자언어시간메모리코드 길이
🥇202102659_안우진Python221ms10496KB249B
🥈202402751_한현욱Python221ms10368KB326B
🥉202402699_오태영Python227ms10496KB257B
4202102622_김우솔Java496ms27392KB1011B
5202102553_윤서웅Java509ms28032KB807B
6202102713_진민혁Java519ms28544KB789B
7202102717_최성윤Java561ms28416KB1411B
8202302582_유민석Java618ms30464KB875B
9202402665_김진하Java627ms33152KB649B
10202302564_성준혁Java629ms32896KB855B
11202402698_오아누Java631ms69632KB911B
12202102675_이문영Java631ms33536KB624B
13202402747_추민정Java632ms33280KB660B
14202402712_이규연Java639ms34920KB492B
15202302602_이준휘Java639ms35224KB485B
16202403102_이태익Java641ms33212KB663B
17202402671_노지현Java642ms34124KB629B
18202402673_박기용Java646ms33232KB670B
19202402748_한가현Java647ms34104KB553B
20202402664_김지후Java654ms34036KB554B
1 / 2
전체 제출
#사용자결과언어시간메모리코드 길이제출 시간
3608202102622_김우솔정답Java496ms27392KB1011B2024. 05. 13. 10:14
3607202102622_김우솔컴파일 에러Python--2121B2024. 05. 13. 10:14
3566202302564_성준혁정답Java629ms32896KB855B2024. 05. 11. 09:28
3565202302564_성준혁오답Java747ms33408KB851B2024. 05. 11. 09:27
3560202402665_김진하정답Java627ms33152KB649B2024. 05. 09. 11:14
3555202403102_이태익정답Java641ms33212KB663B2024. 05. 09. 11:06
3552202402748_한가현정답Java647ms34104KB553B2024. 05. 09. 11:01
3551202402748_한가현컴파일 에러Java--552B2024. 05. 09. 11:00
3549202402685_서진영정답Java685ms33560KB550B2024. 05. 09. 10:55
3548202402671_노지현정답Java642ms34124KB629B2024. 05. 09. 10:52
3547202402671_노지현오답Java629ms34912KB625B2024. 05. 09. 10:51
3546202402656_김영수정답Java706ms40812KB612B2024. 05. 09. 10:50
3545202402671_노지현오답Java678ms34156KB625B2024. 05. 09. 10:50
3544202002466_김동건정답Java693ms34820KB514B2024. 05. 09. 10:47
3543202002466_김동건컴파일 에러Java--511B2024. 05. 09. 10:47
3542202402698_오아누정답Java631ms69632KB911B2024. 05. 09. 10:45
3541202402747_추민정정답Java632ms33280KB660B2024. 05. 09. 10:45
3540202402747_추민정컴파일 에러Python--660B2024. 05. 09. 10:45
3536202302582_유민석정답Java618ms30464KB875B2024. 05. 09. 10:20
3524202402699_오태영정답Python227ms10496KB257B2024. 05. 09. 09:22
1 / 2