6088 : 그래프 표현 — 인접행렬·인접리스트 DFS
•시간제한: 1.000 S
•메모리제한: 256 MB
•제출: 0
•통과: 0
•만든사람: suakii
문제 설명
정점 N개와 간선 E개로 구성된 무방향 그래프가 주어집니다. 이 그래프를 각각 인접 행렬과 인접 리스트 방식으로 표현하고, 1번 노드에서 시작하는 DFS(깊이 우선 탐색)를 수행하여 방문 순서를 출력하는 프로그램을 작성하십시오.
탐색 규칙:
1. 인접 행렬 DFS: 현재 노드에서 갈 수 있는 정점 중 번호가 작은 정점부터 방문합니다.
2. 인접 리스트 DFS: 간선이 주어지는 순서대로 인접 리스트에 추가되며, 인접 리스트에 삽입된 순서대로 방문합니다.
3. 두 DFS 모두 재귀 호출 방식을 사용하며, 이미 방문한 정점은 다시 방문하지 않습니다.
[제약 조건]
• 정점 수 $N$: $1 \le N \le 1{,}000$ (정수)
• 간선 수 $M$: $0 \le M \le 5{,}000$ (정수)
• 시작 정점 $V$: $1 \le V \le N$
탐색 규칙:
1. 인접 행렬 DFS: 현재 노드에서 갈 수 있는 정점 중 번호가 작은 정점부터 방문합니다.
2. 인접 리스트 DFS: 간선이 주어지는 순서대로 인접 리스트에 추가되며, 인접 리스트에 삽입된 순서대로 방문합니다.
3. 두 DFS 모두 재귀 호출 방식을 사용하며, 이미 방문한 정점은 다시 방문하지 않습니다.
[제약 조건]
• 정점 수 $N$: $1 \le N \le 1{,}000$ (정수)
• 간선 수 $M$: $0 \le M \le 5{,}000$ (정수)
• 시작 정점 $V$: $1 \le V \le N$
입력 설명
첫째 줄에 정점의 개수 N (1 ≤ N ≤ 1,000)과 간선의 개수 E (0 ≤ E ≤ 10,000)가 공백을 사이에 두고 주어집니다.
둘째 줄부터 E개의 줄에 걸쳐 간선을 이루는 두 정점 u와 v가 주어집니다. (1 ≤ u, v ≤ N)
둘째 줄부터 E개의 줄에 걸쳐 간선을 이루는 두 정점 u와 v가 주어집니다. (1 ≤ u, v ≤ N)
출력 설명
첫째 줄에 인접 행렬 방식으로 탐색한 DFS 방문 정점 번호들을 공백으로 구분하여 출력합니다.
둘째 줄에 인접 리스트 방식으로 탐색한 DFS 방문 정점 번호들을 공백으로 구분하여 출력합니다.
둘째 줄에 인접 리스트 방식으로 탐색한 DFS 방문 정점 번호들을 공백으로 구분하여 출력합니다.
입력 예시
COPY
복사되었습니다!
복사되었습니다!
4 4
1 2
1 3
2 4
3 4
출력 예시
COPY
복사되었습니다!
복사되었습니다!
1 2 4 3
1 2 4 3
도움
인접 리스트 구현 시 각 노드에 연결된 노드를 순서대로 저장하고 탐색에 사용하십시오. 인접 행렬에서는 N x N 배열을 탐색하므로 자동으로 정점 번호 순서로 접근하게 됩니다.