연결되어 있고 아직 방문하지 않은 노드에 대한 방문 순서 관련
제가 경험이 부족해서 그런 것 같은데요, 이 문제는 'x < y'라는 조건이 없다면 DFS로 풀 수 있는 문제가 아닌 것 같다는 생각이 들었습니다.
https://www.acmicpc.net/problem/2644
에서 '입력' 파트를 보면, '번호 x는 뒤에 나오는 정수 y의 부모 번호를 나타낸다.'라고만 나와있습니다. 즉, 'x < y'라는 조건이 주어져 있지 않습니다. 부모 노드 번호가 자식 노드 번호보다 작다는 조건이 주어져 있지 않는 것입니다.
그래서 저는 이 문제가 DFS로 풀리는 문제가 아닐 것 같다고 생각했었습니다.

위 그림에서는 노드2의 부모가 1이지만, 2보다 값이 큰 3이 될 수도, 4가 될 수도 있을 것이라 생각했습니다. 따라서 노드2를 방문한 이후에, 노드2와 연결된 노드 중 아직 방문하지 않은 노드들 중 어떻게 부모 노드를 찾아야하지? '부모 노드 번호 < 자식 노드 번호'라는 조건이 없으면, 부모 노드를 찾을 수 없을 것 같은데?하는 생각이 들었습니다.
문제에서 x<y라는 조건이 없는 것 같은데, 어떻게 '나와 연결되어 있고 아직 방문하지 않은 노드 중 번호가 가장 작은 노드를 방문해야겠다'는 생각을 하신 것인지 궁금합니다..
답변 1
2
제가 질문의 요점을 잘못 잡은 걸 수도 있는데, 노드 번호가 커지거나 작아지는 것은 부모인지 아닌지의 여부와 큰 상관이 없을 것 같습니다!
예를 들어 예시에서 2번과 7번이 바뀌어있었다면 1 -> 7 -> 2 순서로 방문을 할 것이고, 그러면 7번의 부모는 1번이 되고, 2번의 부모는 7번이 되어서 부모의 번호가 더 커도 부모의 정보를 담는 것에는 문제가 없을 것 같아요. 이 문제의 핵심은 "start 사람과 end 사람 간의 거리가 얼마인지"를 계산하는 문제였기 때문에, 꼭 부모인지 자식인지를 알아야지만 풀 수 있었던 문제는 아니었어요.
다만 그 둘 간의 거리 (간선의 개수)가 얼마인지만 계산할 수 있으면 정답을 잘 구할 수 있었고, 그래서 별도의 x와 y 간의 조건은 제공되지 않은 것으로 이해됩니다!
혹시 제가 질문을 잘못 이해한 것이라면 다시 한번 설명해주세요~!
itertools, sys같은 STL을 사용할 수 없는 경우 질문드립니다.(백준 11724)
1
31
1
백준 13565 침투 질문
1
91
2
침투/섬개수 질문
1
138
2
재귀함수 질문
1
143
1
백준 1260 (DFS 와 BFS) 프린트 위치 질문
1
121
1
촌수계산(백준 2644) 질문
1
184
2
다른 주제 강의
1
136
2
graph
1
196
1
재귀 함수 Depth
1
180
1
백준 DFS
1
216
1
[바닥장식][런타임에러] 질문 있습니다.
1
291
3
그래프 짤 때 adjacency matrix vs adjacency list
1
392
2
2644문제(촌수 구하기) 질문입니다.
1
251
2
DFS 문제 하나 여쭤봅니다!..
1
296
1
다음강의
1
244
1
알고리즘 수업 - 깊이 우선 탐색 2( 백준 24480) 번 질문
1
283
1
1260 문제 풀이에서는 함수 global로 변수 선언
2
211
1
PyPy3와 Python3
1
331
1
백준 2606
1
215
1
22479번 문제 런타임 에러 도와주세요 ㅠㅠ
1
438
1
11724 문제 질문
1
304
2
그래프 초기화
1
280
1
선생님! 바이러스 문제 코드 질문있어요오
1
274
2
질문있습니다!
1
331
1





