13023๋ฒ - ABCDE
์์ ๊ฐ์ ํ์์ผ๋ก ์น๊ตฌ๊ด๊ณ๊ฐ ์ด์ด์ ธ ์๋ ํธ๋ฆฌ์ธ์ง ํ์ธํด๋ณด๋ฉด ๋๋ ๋ฌธ์ ์
๋๋ค.
์ด์ ๊น์ด ์ฐ์ ํ์ ๋ฌธ์ ๋ฅผ ํ๋ฏ ์๊ฐ์ด๊ณผ์ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ํผํ๋๊ฒ ์ฝ์ง ์์์ต๋๋ค.
N,M = map(int,input().split())
graph = [[] for _ in range(N)]
visited = [0]*N
depth = 0
for _ in range(M):
a,b = map(int,input().split())
graph[a].append(b)
graph[b].append(a)
์ผ๋จ ๊ทธ๋ํ, ๋ฐฉ๋ฌธ์ฌ๋ถ(๋ฐฑํธ๋ํน), ์ธก์ ๊น์ด ๋ฑ์ ๋ฐ์์ฃผ๊ณ ํด๋น ์ธ๋ฑ์ค.append(ํด๋น ๊ฐ) ์ผ๋ก ์น๊ตฌ๊ด๊ณ๋ฅผ ๊ทธ๋ํ์ ๊ธฐ๋กํด์ฃผ๋๋ก ํฉ์๋ค.
for i in range(N):
result = dfs(i)
if result == True:
break
depth = 0
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์๋ถํฐ ์๊ฐ์ด๊ณผ๋ฅผ ํผํ๊ธฐ ์ํ ์ ์ฒ์ ํ ๋ชธ๋ถ๋ฆผ์ด ์์๋๋๋ฐ...
dfs ๋ฆฌํด๊ฐ์ด True ๊ฐ ๋์ค๋ฉด ์น๊ตฌ๊ด๊ณ๋ฅผ ๋ง์กฑํ๋ค๊ณ ์ง์ ํ๊ณ break๋ฅผ ์ณ์ ์กฐ๊ธ์ด๋ผ๋ ์๊ฐ๋ญ๋น๋ฅผ ์ค์ด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์์ ํ๋ฒ ๋๋ฉด ๋ค์ ํ์์ ๋๋๋ก ๊น์ด๋ฅผ ์ด๊ธฐํ์์ผ์ค๋๋ค.
import sys
sys.setrecursionlimit(10**7)
input = sys.stdin.readline
์๊ฐ์ด๊ณผ ๋ฐฉ์ง๋ก sysinputํ๊ณ recursionerror๋ฅผ ํผํ๊ธฐ์ํด setrecursionlimit์ ์ง์ ํ๊ฒ ์ต๋๋ค.
def dfs(N):
global depth
if depth > 3:
return True
์ผ๋จ ์ depth > 3์ด๋ผ๋ ๊น์ด๊ฐ ๋ง์กฑํ ๊ฒฝ์ฐ ํจ์ํ์ถ ์ด๋ผ๋ ์ฝ๋๋ฅผ ์ ์๋ ๋ ๋ค ์ ์ด์ค ๊ฒ๋๋ค. PS์ฌ์ดํธ์์ ํ์ธํด๋ณธ ๊ฒฐ๊ณผ ์ ์ฝ๋์์ ์ ๊ฑธ ์์ ํ๋ ์ ๊ฑฐ๋ ์๋์ ํ๋ ์ ์ผ๋ฉด ์๊ฐ์ด๊ณผ๋ก ํต๊ณผํ์ง ๋ชปํ๋๋ผ๊ณ ์.
visited[N] = 1
for i in graph[N]:
if not visited[i]:
depth += 1
dfs(i)
ํด๋น ์ธ๋ฑ์ค ๋ฐฉ๋ฌธํ์๋ฅผ ํด์ฃผ๊ณ ์ธ๋ฑ์ค ์์ ๊ฐ์ ๋ฐฉ๋ฌธํ์ง ์์๋ค๋ฉด ๊น์ด๋ฅผ ํ๋ ๋ ์ฌ๋ ค์ฃผ๊ณ ์ฌ๊ท๋ฅผ ํตํด ๋ฐฉ๋ฌธํด์ฃผ๋๋ก ํฉ์๋ค.
visited[N] = 0
if depth > 3:
return True
depth -= 1
๋ง์ฝ ์ผ์ฐจ์ ์ผ๋ก ํ์์ด ๋๋ฌ๋ค๋ฉด (ํ์๋ ธ๋๊ฐ ์๊ณ ์๊ธฐ์์ ์ด ๋ฆฌํ๋ ธ๋) ํด๋น ๋ ธ๋๋ฅผ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํ์ํ ์ ์๋๋ก ๋ฐฉ๋ฌธ์ฌ๋ถ๋ฅผ ์ด๊ธฐํ ํด์ฃผ๊ฒ ์ต๋๋ค (๋ฐฑํธ๋ํน ๊ธฐ๋ฒ). ์ด์ ์ ๋ง์๋๋ ธ๋ฏ์ด ๋ง์ฝ depth๊ฐ 4 ์ด์์ด๋ผ๋ฉด True๋ฅผ ๋ฆฌํดํฉ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ท๊ฐ ๋๋๊ณ ๋์จ ์ฝ๋์ด๋ฏ๋ก ์ด์ ๋ ธ๋๋ก ๋์๊ฐ์ ์์ ์ ์น๊ธฐ ์ํด ํ์ฌ๊น์ด - 1๋ก ์ด์ ๋ ธ๋์ ๊น์ด๋ฅผ ์ค์ ํด์ ๋ค์ ํ์์ ์ํด์ฃผ๋๋ก ํฉ์๋ค.
if result == True:
print(1)
else:
print(0)
๋ง์ง๋ง์ผ๋ก result๊ฐ True ๊ฐ์ด ๋์ค๋ฉด 1, ์๋๋ผ๋ฉด 0์ ์ถ๋ ฅํ๋ฉด ๋ฉ๋๋ค.
์ฌ๋ด์ด์ง๋ง ํ์ด์ฌ์ผ๋ก DFS ํ์ฉ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋์๋
ํญ์ ์๊ฐ์ด๊ณผ์ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ์ผ๋ํด๋๊ณ ํ์ด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
์ ์ ์ค๋ฒ์์ ํธ๋ฆฌ๋ฌธ์ ๊ฐ์ด ์ด์ฐจ์ ๋ฐฐ์ด ๋นต๋นตํ๊ฒ ์ฑ์์ฐ๊ฒ ๋๋ฉด ๋๋ถ๋ถ ์ค๋ฅ์ ๊ฑธ๋ฆฌ๋ ๊ฑฐ ๊ฐ๋ค์.