본문 바로가기

알고리즘/Baekjoon

dfs. [2644]

[1. 문제 설명]

https://www.acmicpc.net/problem/2644


[2. 풀이 접근]

그래프 구축

  • 모든 부모 자식 간의 관계에 대해서, 그래프를 무방향 그래프로 구축해야 한다.
  • 부모->자식으로 가는 방향 그래프로 구축한다면, 임의의 두 사람 u, v 에 대해서 촌수를 구할 수 없다.
  • u 가 자식이고, v 가 부모인 경우, u->v 인 edge 는 존재하지 않기 때문이다.
  • 따라서, 그래프는 무방향 그래프로 구축해야 한다. 

DFS 종료 시 처리

  • u 에서 dfs 를 시작하였는데, v 를 만나지 못했다면, 
  • 재귀를 종료하고 되돌아가는 시점에서, 현재까지 방문한 모든 정점에 대해서
  • 다시 미방문 처리하지 않아도 된다.
  • 이 정점들은 v 와는 아무 관련이 없기 때문이다.
  • u 에서 dfs 시작 후, a, b, c 를 방문했다면, 이 정점들은 u 와 v 의 촌수를 구하는데 아무 영향이 없다.


[3. 코드]

 

'알고리즘 > Baekjoon' 카테고리의 다른 글

bfs. [16236]  (0) 2023.03.27
dfs. [9466]  (0) 2023.03.22
dfs. [1987]  (0) 2023.03.20
KMP. [1305]  (0) 2023.03.18
유니온-파인드. [3197]  (0) 2023.03.16