https://www.acmicpc.net/problem/2644
2644번: 촌수계산
사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어
www.acmicpc.net
다익스트라나, 여러 방법이 있겠지만 나같은 경우 dfs로 풀었다.
촌수를 타고 들어가는걸 직관적으로 확인할 이중배열을 만들고,
타고 들어가며 알고자 하는 사람과 몇촌인지 확인하면 됨!
n = int(input())
arr = [[0]*(n+1)for _ in range(n+1)]
f, c = list(map(int,input().split()))
m = int(input())
# 2중배열로 만들어줌
for i in range(m):
x,y = map(int,input().split())
arr[y][x] = 1
arr[x][y] = 1
answer = -1
visit = [[0]*(n+1)for _ in range(n+1)]
def dfs(level,f):
global answer
if f == c:
answer = level
return
for i in range(n+1):
if arr[f][i] == 1:
if visit[f][i] == 1: continue
visit[f][i] = 1
visit[i][f] = 1
dfs(level+1,i)
dfs(0,f)
print(answer)
'Algorithm > baekjoon' 카테고리의 다른 글
[파이썬]baekjoon 19949: 영재의 시험 (0) | 2023.03.04 |
---|---|
[파이썬]baekjoon 2302: 극장 좌석 (0) | 2023.03.03 |
[파이썬]baekjoon 3079: 입국심사 (1) | 2023.02.18 |
[파이썬]baekjoon 2156: 포도주 시식 (0) | 2023.02.16 |
[파이썬]baekjoon 15810: 풍선 공장 (0) | 2023.02.16 |
댓글