dfs

https://www.acmicpc.net/problem/1260 코드const dfs = (visit_num, visited, now, graph) => { if (visit_num == graph.length) { return; } dfs_path.push(now); // 현재 방문 노드 visited[now] = true; for (const nx of graph[now]) { if (!visited[nx]) { dfs(visit_num + 1, visited, nx, graph); } }};const bfs = (n, graph, start) => { let q = [start]; let visited = new Array(n + 1).fill(false);..
16985번: Maaaaaaaaaze 첫째 줄부터 25줄에 걸쳐 판이 주어진다. 각 판은 5줄에 걸쳐 주어지며 각 줄에는 5개의 숫자가 빈칸을 사이에 두고 주어진다. 0은 참가자가 들어갈 수 없는 칸, 1은 참가자가 들어갈 수 있는 칸을 www.acmicpc.net 코드 from collections import deque from itertools import permutations boards = [[list(map(int, input().split())) for _ in range(5)] for _ in range(5)] ans = 126 def rotate(board): # 판을 시계 방향 회전 new_board = [[0]*5 for _ in range(5)] for i in range(5): ..
2233번: 사과나무 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 2,000)이 주어진다. 둘째 줄에는 벌레가 만드는 2×N자리의 이진수가 주어진다. 셋째 줄에는 썩은 사과의 위치를 나타내는 두 정수 X, Y가 주어진다. 이는 2×N자리 www.acmicpc.net 코드 import sys sys.setrecursionlimit(10**6) n = int(input()) binary = '9' + input() x, y = map(int, input().split()) parent = [[] for _ in range(n+1)] # 각 노드의 부모(가까운 노드부터) depth = [-1] * (n+1) # 각 노드의 깊이 removed = [] inout = [[] for _ in range(n+1)] de..
17073번: 나무 위의 빗물 첫째 줄에 트리의 노드의 수 N과 1번 노드에 고인 물의 양을 의미하는 정수 W가 주어진다. (2 ≤ N ≤ 500,000, 1 ≤ W ≤ 109) 다음 N-1줄에 걸쳐, 트리에 존재하는 간선의 정보가 U V의 형태로 주어진다 www.acmicpc.net 코드 import sys input = sys.stdin.readline sys.setrecursionlimit(10**6) n, w = map(int, input().split()) edges = [[] for _ in range(n+1)] for _ in range(n-1): u, v = map(int, input().split()) edges[u].append(v) edges[v].append(u) visited = ..
10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 코드 n = int(input()) a_lst = list(map(int, input().split())) ans = -1000 visited = [False]*n def dfs(depth, total, prev): global ans if depth == n: ans = max(total, ans) return for i in range(n): if not visited[i]: tmp = 0 if depth != 0: tmp = abs(prev-a_lst[i]) visited..
딜레이레이
'dfs' 태그의 글 목록