본문 바로가기

dfs35

[백준 11725번] 트리의 부모 찾기 import sys sys.setrecursionlimit(50000000); n = int(input()) graph = [[] for _ in range(n+1)] result = [0]*(n+1) visited = [False]*(n+1) for _ in range(n-1): a, b = map(int,input().split()) graph[a].append(b) graph[b].append(a) def dfs(graph,v,visited): visited[v] = True for i in graph[v]: if not visited[i]: result[i] = v dfs(graph,i,visited) dfs(graph,1,visited) for i in range(2,n+1): print(res.. 2023. 4. 6.
[백준 14503번] 로봇 청소기 import sys input = sys.stdin.readline from collections import deque #방의 크기 세로(n), 가로(m) n, m = map(int,input().split()) # 칸의 좌표(r,c), 방향(d) r, c, d = map(int,input().split()) # 영역 초기화 area = [[0]*m for _ in range(n)] # 방문 여부 확인 리스트 # visited = [[False]*m for _ in range(n)] count = 0 for i in range(n): area[i] = list(map(int,input().split())) def dfs(x,y,d): global count nx = [0]*4 ny = [0]*4 if .. 2023. 2. 17.
[백준 1987번] 알파벳 (파이썬 시간초과 해결) import sys input = sys.stdin.readline sys.setrecursionlimit(10**5) from collections import deque # 세로와 가로 칸 개수 r, c = map(int,input().split()) # 지나갔던 알파벳 정보 배열 alpha = [0]*26 result = 0 count_list = [[1]*c for _ in range(r)] visited = [[False]*c for _ in range(r)] area = [[0]*c for _ in range(r)] for i in range(r): area[i] = (list(input())) def dfs(x,y): global result if x = r or y < 0.. 2023. 2. 16.
[백준 4963번] 섬의 개수 count_list = [] def dfs(x,y,area,visited): if area[x][y] == 0 or visited[x][y]: return False visited[x][y] = True nx = [-1,1,-0,0,-1,-1,1,1] ny = [0,0,-1,1,-1,1,-1,1] for i in range(8): temp_x = x + nx[i] temp_y = y + ny[i] if temp_x >=0 and temp_x = 0 and temp_y < m: if not visited[temp_x][temp_y] and area[temp_x][temp_y] == 1: dfs(temp_x,temp_y,area,visited) return True while T.. 2023. 2. 15.
[백준 11724번] 연결 요소의 개수 n, m = map(int,input().split()) count = 0 graph = [[] for _ in range(n+1)] visited = [False]*(n+1) for _ in range(m): x, y = map(int,input().split()) graph[x].append(y) graph[y].append(x) def dfs(graph,v,visited): if visited[v]: return False visited[v] = True for i in graph[v]: if not visited[i]: dfs(graph,i,visited) return True for i in range(1,n+1): if dfs(graph,i,visited): count += 1 print(co.. 2023. 2. 15.
[백준 1012번] 유기농 배추 # 테스트케이스 수 t = int(input()) count_list = [] def dfs(x,y): if x = n or y = m: return False if area[x][y] == 1 and not visited[x][y]: visited[x][y] = True nx = [-1,1,0,0] ny = [0,0,-1,1] for i in range(4): temp_x = x + nx[i] temp_y = y + ny[i] dfs(temp_x,temp_y) return True return False for _ in range(t): # 세로(n), 가로(m), 배추 개수(k) m, n, k = map(int,input().split()) area = [[0]*m.. 2023. 2. 13.