문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

6103 : DFS 트리 — DFS 스패닝 트리

•시간제한: 1.000 S •메모리제한: 256 MB •제출: 0 •통과: 0 •만든사람: suakii

6103 : DFS 트리 — DFS 스패닝 트리

시간 1.000s · 메모리 256MB · 제출 0 · 정답 0

문제 설명

무방향 연결 그래프와 탐색을 시작할 정점 S가 주어집니다. S 정점부터 시작하여 DFS를 수행할 때 발생하는 DFS 스패닝 트리를 구하고, 트리 간선(Tree Edge)과 역방향 간선(Back Edge)을 분류하여 출력하는 프로그램을 작성하십시오.

규칙 및 정렬:
1. 인접한 노드를 방문할 때는 번호가 작은 정점부터 방문합니다.
2. 모든 간선 출력 시 작은 번호 정점이 왼쪽으로 가게 정렬하여 u v 형태로 출력해야 합니다. (u < v)
3. 트리 간선 목록과 백 간선 목록은 각각 u를 기준으로 오름차순, u가 같으면 v를 기준으로 오름차순 정렬하여 출력합니다.

입력 설명

첫째 줄에 정점의 개수 N (1 ≤ N ≤ 500), 간선의 개수 M (1 ≤ M ≤ 5,000), 시작 정점 S (1 ≤ S ≤ N)가 주어집니다.
둘째 줄부터 M개의 줄에 무방향 간선 u v가 주어집니다.

출력 설명

첫째 줄에 트리 간선의 개수 T를 출력합니다.
둘째 줄부터 T개의 줄에 걸쳐 트리 간선 u v를 정렬 순서대로 출력합니다.
다음 줄에 백 간선의 개수 B를 출력합니다.
이후 B개의 줄에 걸쳐 백 간선 u v를 정렬 순서대로 출력합니다.

입력 예시
COPY
복사되었습니다!

4 4 1
1 2
2 3
3 4
4 1

출력 예시
COPY
복사되었습니다!

3
1 2
2 3
3 4
1
1 4

도움

DFS 탐색 과정에서 처음 방문하는 노드를 가리키는 간선은 트리 간선(Tree Edge)입니다. 이미 방문한 노드를 가리키며 부모 노드가 아닌 노드로 향하는 간선은 백 간선(Back Edge)으로 분류할 수 있습니다.

출처/분류

NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘