-
[๋ฐฑ์ค] 18243 Small World Network with PythonPS 2022. 3. 1. 02:19728x90๋ฐ์ํ
๐ BOJ 18243 Small World Network
๐ก ์กฐ๊ฑด
์ฒซ ๋ฒ์งธ ์ค์ ์ง๊ตฌ์ ์๋ ์ฌ๋์ ์ N๊ณผ ์น๊ตฌ ๊ด๊ณ์ ๊ฐ์ K.
(1 โค N โค 100, 0 โค K โค Nร(N-1)/2)๋ชจ๋ ์ฌ๋์ 1๋ถํฐ N๊น์ง ๋ฒํธ๊ฐ ๋งค๊ฒจ์ ธ ์๋ค.
๋ ๋ฒ์งธ ์ค๋ถํฐ K+1๋ฒ์งธ ์ค๊น์ง ์น๊ตฌ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ A B๊ฐ ํ ์ค์ ํ๋์ฉ ์ฃผ์ด์ง๋ค.
(1 โค A, B โค N)A์ B๊ฐ ์น๊ตฌ๋ฉด B์ A๋ ์น๊ตฌ๋ค. ์๊ธฐ ์์ ๊ณผ ์น๊ตฌ์ธ ๊ฒฝ์ฐ๋ ์๋ค.
A์ B์ ์น๊ตฌ ๊ด๊ณ๋ ์ค๋ณต๋์ด ์ ๋ ฅ๋์ง ์๋๋ค.ํด๋น ๋คํธ์ํฌ๊ฐ ์์ ์ธ์ ๋คํธ์ํฌ๋ฅผ ๋ง์กฑํ๋ฉด
"Small World!"๋ฅผ, ๋ง์กฑํ์ง ์๋๋ค๋ฉด "Big World!"๋ฅผ ์ถ๋ ฅBFS, ๊ทธ๋ํ ์ด๋ก ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin from collections import deque n, k = map(int, stdin.readline().split()) network = [[] for _ in range((n + 1))] tf = True for i in range(k): a, b = map(int, stdin.readline().split()) network[a].append(b) network[b].append(a) def bfs(root): visited = set() visited.add(root) q = deque() q.append((root, 0)) while q: now, dist = q.popleft() if dist > 6: return False for node in network[now]: if node not in visited: visited.add(node) q.append((node, dist + 1)) if len(visited) == n: return True else: return False for i in range(1, n + 1): if not bfs(i): tf = False break if tf: print("Small World!") else: print("Big World!")
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
10 8 1 2 2 3 3 4 4 5 6 7 7 8 8 9 9 10
์คํ๊ฒฐ๊ณผ
Big World!
โจ๏ธ ๋ฌธ์ ํ์ด
๋คํธ์ํฌ ์์ ์น๊ตฌ ์ฌ์ด๋ ์๋ฐฉํฅ ๊ฐ์ ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
๊ทธ๋ํ๋ก ์ฌ์ฉํ network ๋ผ๋ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๊ณ , ๊ทธ๋ํ์ ์ ๋ ฅํ๋ค.
1๋ฒ ๋ ธ๋๋ถํฐ bfs() ์๊ณ ๋ฆฌ์ฆ์ ์ํํ๋ฉด์ q ์ (๋ ธ๋๋ฒํธ, dist)๋ฅผ ๋ฃ์ด ์ํํ๋ค.
dist = 0 ๋ถํฐ ์์ํ๋ค.bfs๊ฐ ์ํ๋๋ฉด์ dist๊ฐ 6์ ์ด๊ณผํ๋ฉด, False๋ฅผ ๋ฐํํ๋ค.
visited (๋ฐฉ๋ฌธ ์ฒ๋ฆฌ set)์ ๊ธธ์ด๊ฐ ๋ง์ฝ ๋ ธ๋ ์ด ๊ฐ์ n๊ณผ ๊ฐ์ง ์๋ค๋ฉด False ๋ฅผ ๋ฐํ.
๋ฐํ๋ฐ์ bfs ์ ๊ฒฐ๊ณผ๊ฐ์ด False๋ผ๋ฉด "Big World!"
๋ฐํ๋ฐ์ bfs ์ ๊ฒฐ๊ณผ๊ฐ์ด True๋ผ๋ฉด "Small World!"
๐พ ๋๋์
- BFS๋ก๋ ํ์ด๋ฅผ ๊ฐ๋ฅํ์ง๋ง, ํ๋ก์ด๋-์์ฌ ์๊ณ ๋ฆฌ์ฆ์์๋ ์คํจํ์๋ค.
- (1)๋ฒ ์ ์ด์ ๋ dist > 6 ์ ์กฐ๊ฑด์ ์ฒ๋ฆฌํ์ง ๋ชปํด์์๋ค.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1855 ์ํธ with Python (0) 2022.03.01 [๋ฐฑ์ค] 1342 ํ์ด์ ๋ฌธ์์ด with Python (0) 2022.03.01 [๋ฐฑ์ค] 15722 ๋น๊ธ๋น๊ธ ์ค๋ค์ผ with Python (0) 2022.02.27 [๋ฐฑ์ค] 14425 ๋ฌธ์์ด ์งํฉ with Python (0) 2022.02.27 [๋ฐฑ์ค] 11501 ์ฃผ์ with Python (0) 2022.02.24