# 1012
import sys
N = int(sys.stdin.readline())
sys.setrecursionlimit(10**6)
answers = []
def dfs(x,y) : # x : 가로 / y : 세로
if x<0 or y<0 or x>=m or y>=n :
return False
if graph[y][x] == 1 :
graph[y][x] = 0
dfs(x+1,y)
dfs(x-1,y)
dfs(x,y+1)
dfs(x,y-1)
return True
return False
for _ in range(N) :
m,n,k = map(int, sys.stdin.readline().split())
# m : 가로 (두번째) / n : 세로 (첫번째)
graph = [[0] * m for _ in range(n)]
for _ in range(k) :
a,b = map(int, sys.stdin.readline().split())
graph[b][a] = 1
cnt = 0
for i in range(m) :
for j in range(n) :
if dfs(i,j) :
cnt += 1
answers.append(cnt)
for a in answers :
print(a)
⭐️⭐️⭐️⭐️⭐️
계속해서 시간초과로 골머리를 앓았던 문제,,,,,💦
처음엔 이 문제가 무슨 뜻인지 모르겠어서,,,, 이런 식의 트리가 있다고 가정하고 대충 그리면서(?) 풀었다
# 1240
import sys
n,m = map(int, sys.stdin.readline().split())
graph = [[0]*(n+1) for _ in range(n+1)]
for _ in range(n-1) :
x,y,d = map(int, sys.stdin.readline().split())
graph[x][y] = d
graph[y][x] = d
result = 0
def dfs(start , end , distance) : # start:시작하는 노드 / end:최종적으로 이동하려는 노드
visited[start] = True
global result
for i in range(1,n+1) :
if graph[start][i] >0 and not visited[i] :
if end == i :
result = distance + graph[start][i]
else :
dfs(i,end,distance+graph[start][i])
for _ in range(m) :
x,y = map(int, sys.stdin.readline().split())
visited = [False] * (n+1)
dfs(x,y,0)
print(result)
좋은 정보 감사합니다