728x90
반응형
https://www.acmicpc.net/problem/13023
문제
BOJ 알고리즘 캠프에는 총 N명이 참가하고 있다. 사람들은 0번부터 N-1번으로 번호가 매겨져 있고, 일부 사람들은 친구이다.
오늘은 다음과 같은 친구 관계를 가진 사람 A, B, C, D, E가 존재하는지 구해보려고 한다.
- A는 B와 친구다.
- B는 C와 친구다.
- C는 D와 친구다.
- D는 E와 친구다.
위와 같은 친구 관계가 존재하는지 안하는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 사람의 수 N (5 ≤ N ≤ 2000)과 친구 관계의 수 M (1 ≤ M ≤ 2000)이 주어진다.
둘째 줄부터 M개의 줄에는 정수 a와 b가 주어지며, a와 b가 친구라는 뜻이다. (0 ≤ a, b ≤ N-1, a ≠ b) 같은 친구 관계가 두 번 이상 주어지는 경우는 없다.
출력
문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다.
예제
Example 1:
Input:
5 4
0 1
1 2
2 3
3 4
Output:
1
Example 2:
Input:
5 5
0 1
1 2
2 3
3 0
1 4
Output:
1
Example 3:
Input:
6 5
0 1
0 2
0 3
0 4
0 5
Output:
0
Example 4:
Input:
8 8
1 7
3 7
4 7
3 4
4 6
3 5
0 4
2 7
Output:
1
조건
시간 제한 : 2초
메모리 제한 : 512 MB
풀이과정
풀이
import sys
n, m = map(int, input().split())
graph = [[] for _ in range(n)]
for _ in range(m):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
a = []
visited = [False]*n
def dfs(level, a):
if level == 4:
print(1)
sys.exit()
else:
for i in graph[a[-1]]:
if visited[i] == False:
visited[i] = True
a.append(i)
dfs(level+1, a)
a.pop()
visited[i] = False
for i in range(n):
a.append(i)
visited[i] = True
dfs(0, a)
visited[i] = False
a = []
print(0)
728x90
반응형
'Problem Solving > 백준' 카테고리의 다른 글
[백준] 집합(11723번) - 파이썬(Python) (0) | 2022.06.05 |
---|---|
[백준] 종이 조각(14391번) - 파이썬(Python) (0) | 2022.06.05 |
[백준] 1, 2, 3 더하기 5(15990번) - 파이썬(Python) (0) | 2022.06.05 |
[백준] 가장 긴 증가하는 부분 수열 4(14002번) - 파이썬(Python) (0) | 2022.06.05 |
[백준] 제곱수의 합(1699번) - 파이썬(Python) (0) | 2022.06.05 |