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

6091 : 사이클 탐지 — 무방향 그래프

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

6091 : 사이클 탐지 — 무방향 그래프

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

문제 설명

무방향 그래프가 주어졌을 때, 그래프 내에 사이클(Cycle)이 존재하는지 여부를 판별하는 프로그램을 작성하십시오.
무방향 그래프에서의 사이클 탐지는 DFS를 수행하면서 이미 방문한 정점을 재방문했는지 확인해야 합니다. 다만, 직전 부모 노드로 되돌아가는 간선은 사이클로 판정하지 않습니다.

[제약 조건]
• 정점 수 $N$: $1 \le N \le 1{,}000$ (정수)
• 간선 수 $M$: $0 \le M \le 5{,}000$ (정수)
• 그래프는 무방향이며, 직전 부모 노드로의 역방향 간선은 사이클로 판정하지 않습니다.

입력 설명

첫째 줄에 정점의 개수 N (1 ≤ N ≤ 1,000)과 간선의 개수 M (0 ≤ M ≤ 5,000)이 주어집니다.
둘째 줄부터 M개의 줄에 간선 u v가 주어집니다.

출력 설명

사이클이 존재하면 YES, 존재하지 않으면 NO를 출력합니다.

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

4 4
1 2
2 3
3 4
4 1

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

YES

도움

DFS 함수 호출 시 부모 노드 정보를 함께 넘겨주어(예: dfs(node, parent)), 다음 노드가 이미 방문되었는데 그 노드가 parent가 아니라면 사이클이 존재하는 것으로 판단할 수 있습니다.

출처/분류

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