https://www.acmicpc.net/problem/11724
11724๋ฒ: ์ฐ๊ฒฐ ์์์ ๊ฐ์
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N๊ณผ ๊ฐ์ ์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) ๋์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์ ๊ฐ์ ์ ์ ๋์ u์ v๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ u, v ≤ N, u ≠ v) ๊ฐ์ ๊ฐ์ ์ ํ ๋ฒ๋ง ์ฃผ
www.acmicpc.net
์ํ๊ณต๋ถํ ๋ ๊ณต๋ถ๋นผ๊ณค ๋ค ์ฌ๋ฐ๋๊ฒ ์ฌ์ด์ธ์ค. . .
import sys
from collections import deque
input=sys.stdin.readline
n, m = map(int, input().split())
graph = [[]*(n+1) for i in range(n+1)];
visited = [False]*(n+1) #์ฐ๊ฒฐ ๊ฐ์๋ฅผ ์ธ๊ธฐ ์ํ visited
cnt = 0 #์ฐ๊ฒฐ ๊ฐ์
for _ in range(m):
a, b = map(int, input().split())
graph[a].append(b);
graph[b].append(a);
def bfs(n, visited):
q = deque()
q.append(n)
while q:
nn = q.popleft()
visited[nn] = True
for i in graph[nn]:
if (visited[i] == False) : #๋ฐฉ๋ฌธํ์ง ์์ ๋
ธ๋๋ผ๋ฉด
visited[i] = True #๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ ํด์ค
q.append(i) #ํ์ ๋ฃ์ด์ค๋ค
for i in range(1, len(graph)):
if (visited[i] == False): #๋ฐฉ๋ฌธํ์ง ์์ ๋
ธ๋๋ผ๋ฉด
cnt += 1
bfs(i,visited)
print (cnt)
bfs๋ก ํ์ด์ฃผ์๋ค. ์๊ฐ์ด๊ณผ๊ฐ ๋์ sys.stdin.realine์ ์ถ๊ฐํด์คฌ๋๋ ํต๊ณผํ์๋ค.
1๋ฒ๋ถํฐ n๋ฒ ๋ ธ๋๊น์ง bfs๋ก ํ์ํ์ฃผ๋๋ฐ, ๋ฐฉ๋ฌธํ์ง ์์ ๋ ธ๋๋ ์ ์ธํ๊ณ ์ด ๋ช ๋ฒ์ด ์คํ๋๋์ง๋ฅผ ์ถ๋ ฅํ๋ฉด ์ฐ๊ฒฐ ์์์ ๊ฐ์๊ฐ ์ถ๋ ฅ๋๋ค.
ํฌ๊ฒ ์ด๋ ค์ด ๋ฌธ์ ๋ ์๋์๋ค.
'์ฝํ ์ค๋น' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
<์๋ฃ ๊ตฌ์กฐ> 10828๋ฒ. ์คํ (์ค๋ฒ 4) (0) | 2022.12.31 |
---|---|
<Queue> ๋ฐฑ์ค 1966๋ฒ. ํ๋ฆฐํฐ ํ (0) | 2022.12.31 |
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 2. N๊ฐ์ ์ต์๊ณต๋ฐฐ์ (0) | 2022.08.17 |
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ2. ํ์ผ ๋๋ฒ <์ค๋ต๋ ธํธ> (0) | 2022.08.17 |
๋ฐฑ์ค 9012๋ฒ. ๊ดํธ (0) | 2022.08.16 |