그래프는 정점과 정점을 잇는 간선으로 정의된 자료 구조이다. 그림으로 그래프를 표현할 때, 정점은 보통 원으로 표현하고 간선은 원을 잇는 선으로 표현한다. 위 그래프에서 정점은 1, 2, 3, 4, 5, 6이고 간선은 ~(1, 2), (1, 5), (2, 3), (2, 5), (3, 4), (4, 5), (4, 6)~이다.
수학적으로는 그래프를 위와 같이 정의할 수 있으나, 실제 프로그램으로 그래프를 저장하는 방법은 여러 가지가 있다. 인접 리스트(Adjacency list)란 그러한 방법 중 하나로, N개의 리스트(자료 구조)를 통해서 그래프를 표현하는 방법이다.
예를 들어 위 그래프의 간선을 모두 저장하고 난 후의 인접 리스트(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_안우진 | Python | 220ms | 10496KB | 324B |
| 🥈 | 202402751_한현욱 | Python | 221ms | 10368KB | 349B |
| 🥉 | 202402699_오태영 | Python | 223ms | 10368KB | 345B |
| 4 | 202102717_최성윤 | Java | 495ms | 27136KB | 1267B |
| 5 | 202402712_이규연 | Java | 506ms | 28416KB | 1001B |
| 6 | 202102553_윤서웅 | Java | 522ms | 28544KB | 984B |
| 7 | 202102713_진민혁 | Java | 536ms | 28672KB | 1326B |
| 8 | 202102622_김우솔 | Java | 541ms | 27904KB | 1312B |
| 9 | 202302564_성준혁 | Java | 634ms | 33536KB | 1063B |
| 10 | 202403102_이태익 | Java | 642ms | 35068KB | 787B |
| 11 | 202302602_이준휘 | Java | 644ms | 35916KB | 742B |
| 12 | 202402673_박기용 | Java | 644ms | 34888KB | 933B |
| 13 | 202402698_오아누 | Java | 644ms | 79872KB | 1247B |
| 14 | 202402664_김지후 | Java | 655ms | 35364KB | 882B |
| 15 | 202402656_김영수 | Java | 690ms | 39816KB | 1125B |
| 16 | 202002466_김동건 | Java | 712ms | 37232KB | 759B |
| # | 사용자 | 결과 | 언어 | 시간 | 메모리 | 코드 길이 | 제출 시간 |
|---|---|---|---|---|---|---|---|
| 3613 | 202102622_김우솔 | 정답 | Java | 541ms | 27904KB | 1312B | 2024. 05. 13. 10:24 |
| 3611 | 202102622_김우솔 | 오답 | Java | 517ms | 27648KB | 1255B | 2024. 05. 13. 10:23 |
| 3610 | 202102622_김우솔 | 오답 | Java | 507ms | 27776KB | 1279B | 2024. 05. 13. 10:20 |
| 3609 | 202102622_김우솔 | 오답 | Java | 514ms | 27648KB | 1279B | 2024. 05. 13. 10:19 |
| 3604 | 202402656_김영수 | 정답 | Java | 690ms | 39816KB | 1125B | 2024. 05. 13. 09:11 |
| 3588 | 202402656_김영수 | 오답 | Java | 690ms | 40396KB | 557B | 2024. 05. 13. 06:10 |
| 3587 | 202402656_김영수 | 오답 | Java | 686ms | 40128KB | 553B | 2024. 05. 13. 06:07 |
| 3568 | 202302564_성준혁 | 정답 | Java | 634ms | 33536KB | 1063B | 2024. 05. 11. 09:35 |
| 3567 | 202302564_성준혁 | 오답 | Java | 617ms | 33920KB | 910B | 2024. 05. 11. 09:33 |
| 3564 | 202403102_이태익 | 정답 | Java | 642ms | 35068KB | 787B | 2024. 05. 09. 11:30 |
| 3562 | 202403102_이태익 | 오답 | Java | 654ms | 34960KB | 714B | 2024. 05. 09. 11:26 |
| 3557 | 202002466_김동건 | 정답 | Java | 712ms | 37232KB | 759B | 2024. 05. 09. 11:12 |
| 3556 | 202002466_김동건 | 오답 | Java | 692ms | 39040KB | 703B | 2024. 05. 09. 11:08 |
| 3554 | 202402698_오아누 | 정답 | Java | 644ms | 79872KB | 1247B | 2024. 05. 09. 11:04 |
| 3553 | 202402698_오아누 | 오답 | Java | 649ms | 79616KB | 1173B | 2024. 05. 09. 11:01 |
| 3539 | 202102675_이문영 | 오답 | Java | 625ms | 33920KB | 853B | 2024. 05. 09. 10:40 |
| 3538 | 202102675_이문영 | 오답 | Java | 630ms | 33536KB | 856B | 2024. 05. 09. 10:39 |
| 3537 | 202402664_김지후 | 정답 | Java | 659ms | 36652KB | 891B | 2024. 05. 09. 10:26 |
| 3534 | 202402664_김지후 | 정답 | Java | 655ms | 35364KB | 882B | 2024. 05. 09. 10:01 |
| 3533 | 202402712_이규연 | 정답 | Java | 506ms | 28416KB | 1001B | 2024. 05. 09. 09:58 |