2606 바이러스
from collections import deque
n = int(input())
m = int(input())
graph = []
for i in range(n+1):
graph.append([0] * (n + 1))
for i in range(m):
x,y = map(int, input().split())
graph[x][y] = 1
graph[y][x] = 1
marked = [False]*(n+1)
marked[1] = True
def exploration():
answer = 0
queue = deque()
queue.append(1)
while queue:
x = queue.popleft()
for i in range(1,n+1):
if graph[x][i] == 1 and marked[i] == False:
queue.append(i)
marked[i] = True
answer += 1
return answer
print(exploration())
1697_숨바꼭질
def to_mul(i,count):
if i == 0:
return
index = i
while True:
index *= 2
if index == x:
continue
count += 1
if index >= len:
break
coordinate[index] = min(count,coordinate[index])
x,y = map(int, input().split())
if x == 0 and y == 0:
print(0)
elif x == 0 and y == 1:
print(1)
else:
len = max(x,y)*2
coordinate = [9999999] * (len)
to_mul(x,0)
dx = [1,-1]
coordinate[x] = 0
count = 0
for i in reversed(range(0,x)):
count += 1
coordinate[i] = count
to_mul(i, coordinate[i])
for i in range(x+1,len-1):
if i % 2 == 0:
coordinate[i] = min(coordinate[i-1] + 1, coordinate[int(i/2)] + 1,coordinate[i])
else:
coordinate[i] = min(coordinate[i-1]+1, coordinate[i+1] + 1,coordinate[i])
to_mul(i,coordinate[i])
print(coordinate[y])