728x90
#1389번 케빈 베이컨의 6단계 법칙 https://www.acmicpc.net/problem/1389
1389번: 케빈 베이컨의 6단계 법칙
첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻
www.acmicpc.net
확실히 문제가 안풀리는 날에는 문제 이해를 제대로 안한 경우가 많아서 속상하다.
신중에 신중을 기하는 내가 되길 바란다.
내 코드
from collections import deque
N, M = map(int, input().split())
network = [[] for _ in range(N+1)]
for _ in range(M):
a, b = map(int, input().split())
network[a].append(b)
network[b].append(a)
answer = [0, N**2] # person_number, cnt
# bfs
for p in range(1, N+1): # 하나씩 bfs를 다 돌려야하나? 아니면 한번만 돌려서 할 수 있을까?
que = deque()
que.append([p, 0])
visited = [False]*(N+1)
visited[p] = True
while que:
x, cnt = que.popleft()
for np in network[x]:
if not visited[np]:
visited[np] = cnt + 1
que.append([np, cnt+1])
visited[p] = 0
result = sum(visited)
answer = [p, result] if result < answer[1] else answer
print(answer[0])
BFS를 통해 구현했다. 모든 노드에서 출발하는 bfs를 전부 구현했기 때문에 시간초과가 나지 않을까 걱정됐지만 부드럽게 통과해서 기뻤다.
다른 사람의 코드도 비슷비슷해서 더 작성할 내용은 없다.
그동안의 풀이에서는 가볍게 풀린 문제는 기록하지 않았다.
하지만 이제 모두 기록하고자 한다. 기록한 문제가 더 기억에 남는 듯 하기 때문에...
화이팅이다.
'Algorithm > acmicpc.net' 카테고리의 다른 글
애매한 차이. (#1780 종이의 개수) (0) | 2022.03.15 |
---|---|
알고리즘 짤 때 가장 한심스러운 순간 (1541번 잃어버린 괄호) (0) | 2022.03.13 |
분할 정복의 힘 (2630번, 1074번 파이썬) (0) | 2022.03.11 |
취약점 극복하기 : 힙 (0) | 2022.03.10 |
알고리즘 잘 푸는법 : 문제 이해가 우선 (실버2) (0) | 2022.03.08 |