ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
๋ฌธ์ ํ์ด
๊ทธ๋ํ ํ์์ ํตํด ์ฐ๊ฒฐ๋ ๊ด๊ณ์์ ๋ค์๊ณผ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ด๋ฃจ๋ ๊ฒฝ์ฐ๊ฐ ์๋๊ฐ๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค. DFS๋ฅผ ํ์ ํ๋๋ฐ ์์ด ์์ ์ง์ ์ ๊ฐ ๋ ธ๋๋ก ์ง์ ํ์ฌ ํ์์ ํ๋ฉด ๋๋ค. ๋ฐฑํธ๋ํน์ด ํ์ํ๋ฏ๋ก, `vistied` ์ฒดํฌ/ํด์ ๋ฅผ ์งํํด์ฃผ์ด์ผ ์ ์์ ์ผ๋ก ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ์ ์ ์๋ค.
- A๋ B์ ์น๊ตฌ๋ค.
- B๋ C์ ์น๊ตฌ๋ค.
- C๋ D์ ์น๊ตฌ๋ค.
- D๋ E์ ์น๊ตฌ๋ค.
์ฆ, ์ด๋ DFS๋ก ํ์ํ ๊ฒฝ์ฐ depth๊ฐ 4๋ณด๋ค ํฐ ๊ฒฝ์ฐ๊ฐ ์๋์ง๋ฅผ ์ฐพ๋ ๊ฒ๊ณผ ๊ฐ๋ค. 5๋ช ์ด ์น๊ตฌ ๊ด๊ณ๋ฅผ ์ด๋ฃจ์ด์ผ ํ์ง๋ง depth๊ฐ 4์ธ ๊ฒฝ์ฐ๊น์ง๋ง ์ฐพ์ผ๋ฉด ๋๋ ์ด์ ๋ depth๊ฐ 0์ธ ๊ฒฝ์ฐ, ์ฆ ์์ ์ ์ ์ธํ๊ณ ๋๋จธ์ง 4๋ช ์ด ์ฐ๊ฒฐ๋์๋์ง ํ์ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
False True False False True
True False True False False
False True False True False
False False True False False
True False False False False
๋ฌธ์ ๋ DFS๋ฅผ ์์ฑํ๋ฉด ๋๊ธฐ์ ์ด๋ ค์ด ๊ฒ์ด ์์๋๋ฐ... ๊ธฐ์กด๊ณผ ๊ฐ์ด ๊ทธ๋ํ๋ฅผ ์ด๊ธฐํ ํ์ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋ค. ๊ธฐ์กด์๋ ๊ทธ๋ํ๋ฅผ N * N ํฌ๊ธฐ์ 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๊ณ ๋ฐฉ๋ฌธ ๊ฐ๋ฅํ ๊ฒฝ์ฐ True๋ก ํ์ํ์ฌ ํ์ํ์๋ค. ์๋ฅผ ๋ค์ด ์์ ์ ๋ ฅ 1์ ๊ฒฝ์ฐ ์์ ๊ฐ์ด ์ด๊ธฐํํ์๋ค. ํ์ง๋ง ์ด๋ ๊ฒ ํ ๊ฒฝ์ฐ 9%์์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ์ฌ ๋์ด๊ฐ์ง ์๋๋ค.
๋ค๋ฅธ ์ฌ๋๋ค์ ํ์ด๋ฅผ ์ฐธ๊ณ ํ๋, ์ ์ด์ ๋ฐฉ๋ฌธ ๊ฐ๋ฅํ ๋ ธ๋๋ง ์ถ๊ฐํด๋๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์ ์ ์์๋ค. ๋ฐ๋ผ์ ๊ทธ๋ํ๋ฅผ ์ด๊ธฐํ ํ ๋ ๋ฐฉ๋ฌธ ๊ฐ๋ฅํ ๋ ธ๋๋ง ์ถ๊ฐํ๋, ํ์์ ๊ฒฝ์ฐ์ ์๊ฐ ์ค์ด๋ค์ด์ ๊ทธ๋ฐ์ง ๋ฌด์ฌํ ํต๊ณผํ์๋ค.
์ฝ๋
from sys import stdin
def dfs(depth, cur_node):
if depth == 4:
print(1)
exit()
for next_node in graph[cur_node]:
if not visited[next_node]:
visited[next_node] = True
dfs(depth + 1, next_node)
visited[next_node] = False
if __name__ == "__main__":
n, m = map(int, stdin.readline().split())
graph = [[] * n for _ in range(n)]
visited = [False] * n
for _ in range(m):
i, j = map(int, stdin.readline().split())
graph[i].append(j)
graph[j].append(i)
for node in range(n):
visited[node] = True
dfs(0, node)
visited[node] = False
print(0)
depth๊ฐ 4๊ฐ ๋๋ค๋ฉด, ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ์ ๊ฒ์ด๋ฏ๋ก ๋ ์ด์ ์งํํ์ง ์๊ณ 1์ ์ถ๋ ฅํ๊ณ `exit()`๋ฅผ ํตํด ์ข ๋ฃํ๋ค. ์ด์ ๋ฐ๋๋ก ๋ชจ๋ ๋ ธ๋์ ํ์์ ์งํํ์์์๋ ์ฐพ์ง ๋ชปํ๋ค๋ฉด, ๋ง์กฑํ๋ ๊ฒฝ์ฐ์ ์๊ฐ ์๋ ๊ฒ์ด๋ค.
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 4963 ์ฌ์ ๊ฐ์ (0) | 2020.07.21 |
---|---|
๋ฐฑ์ค: 2667 ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (0) | 2020.07.21 |
๋ฐฑ์ค: 11724 ์ฐ๊ฒฐ ์์์ ๊ฐ์ (0) | 2020.07.20 |
๋ฐฑ์ค: 1260 DFS์ BFS (0) | 2020.07.20 |
๋ฐฑ์ค: 1248 ๋ง์ถฐ๋ด (0) | 2020.07.19 |