#69
인접 리스트
채점 준비중
시간 제한
1000ms
메모리 제한
256MB
제출
40
정답
18
맞힌 사람
16
정답 비율
45.0%
<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 list)란 그러한 방법 중 하나로, N개의 리스트(자료 구조)를 통해서 그래프를 표현하는 방법이다.

<div style="text-align:center"> <img src="/media/martor/4564a209-0ed1-413f-8b79-7a05d15385c0.png" alt="인접 행렬 예시" style="max-width:400px; max-height:300px;"> </div>

예를 들어 위 그래프의 간선을 모두 저장하고 난 후의 인접 리스트(Adjacency list)는 위와 같다. 위 그래프에서 간선에는 방향이 없기 때문에 adj[u].append(v)를 해줬다면 반대로 adj[v].append(u)도 해줘야 한다.

그래프가 주어질 때, 이를 인접 리스트(Adjacency list)로 표현해보자.

입력

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

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

출력

주어진 그래프를 표현한 인접 리스트(Adjacency list)를 출력한다. 즉, N개의 줄에 i번째 정점의 이웃한 정점 adj[i]를 출력한다. adj[i]는 오름차순으로 정렬해서 출력해야 하며 adj[i]가 비었다면 -1만을 출력한다.

예제 입력 1

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

예제 출력 1

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

예제 입력 2

4 2
1 2
2 3

예제 출력 2

2
1 3
2
-1

예제 입력 3

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

예제 출력 3

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

노트

빈 리스트로 초기화되어 있는 길이가 N인 배열을 선언한 후에 M개의 간선을 입력받으면서 리스트에 원소를 추가합니다.

간선으로 ~(u, v)~가 주어지면 adj[u].append(v)를 해줍니다. 반대도 마찬가지로 추가해 줘야 함에 유의합니다.

코드 제출
로딩 중...
내 제출
아직 제출 내역이 없습니다.
맞은 사람
순위사용자언어시간메모리코드 길이
🥇202102659_안우진Python220ms10496KB324B
🥈202402751_한현욱Python221ms10368KB349B
🥉202402699_오태영Python223ms10368KB345B
4202102717_최성윤Java495ms27136KB1267B
5202402712_이규연Java506ms28416KB1001B
6202102553_윤서웅Java522ms28544KB984B
7202102713_진민혁Java536ms28672KB1326B
8202102622_김우솔Java541ms27904KB1312B
9202302564_성준혁Java634ms33536KB1063B
10202403102_이태익Java642ms35068KB787B
11202302602_이준휘Java644ms35916KB742B
12202402673_박기용Java644ms34888KB933B
13202402698_오아누Java644ms79872KB1247B
14202402664_김지후Java655ms35364KB882B
15202402656_김영수Java690ms39816KB1125B
16202002466_김동건Java712ms37232KB759B
전체 제출
#사용자결과언어시간메모리코드 길이제출 시간
3613202102622_김우솔정답Java541ms27904KB1312B2024. 05. 13. 10:24
3611202102622_김우솔오답Java517ms27648KB1255B2024. 05. 13. 10:23
3610202102622_김우솔오답Java507ms27776KB1279B2024. 05. 13. 10:20
3609202102622_김우솔오답Java514ms27648KB1279B2024. 05. 13. 10:19
3604202402656_김영수정답Java690ms39816KB1125B2024. 05. 13. 09:11
3588202402656_김영수오답Java690ms40396KB557B2024. 05. 13. 06:10
3587202402656_김영수오답Java686ms40128KB553B2024. 05. 13. 06:07
3568202302564_성준혁정답Java634ms33536KB1063B2024. 05. 11. 09:35
3567202302564_성준혁오답Java617ms33920KB910B2024. 05. 11. 09:33
3564202403102_이태익정답Java642ms35068KB787B2024. 05. 09. 11:30
3562202403102_이태익오답Java654ms34960KB714B2024. 05. 09. 11:26
3557202002466_김동건정답Java712ms37232KB759B2024. 05. 09. 11:12
3556202002466_김동건오답Java692ms39040KB703B2024. 05. 09. 11:08
3554202402698_오아누정답Java644ms79872KB1247B2024. 05. 09. 11:04
3553202402698_오아누오답Java649ms79616KB1173B2024. 05. 09. 11:01
3539202102675_이문영오답Java625ms33920KB853B2024. 05. 09. 10:40
3538202102675_이문영오답Java630ms33536KB856B2024. 05. 09. 10:39
3537202402664_김지후정답Java659ms36652KB891B2024. 05. 09. 10:26
3534202402664_김지후정답Java655ms35364KB882B2024. 05. 09. 10:01
3533202402712_이규연정답Java506ms28416KB1001B2024. 05. 09. 09:58
1 / 2