λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
CS/μ•Œκ³ λ¦¬μ¦˜

[λ°±μ€€ 11724 μ—°κ²° μš”μ†Œμ˜ 개수] 파이썬 BFS λ„ˆλΉ„ μš°μ„  탐색 풀이

by πŸŒ»β™š 2020. 9. 28.

μ—°κ²° μš”μ†Œμ˜ 개수 문제

 

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

뱑ν–₯ 없은 μ–‘λ°©ν–₯ κ·Έλž˜ν”„κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ μ—°κ²° μš”μ†Œλ₯Ό κ΅¬ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€.

 

 

문제 풀이

μ—°κ²° μš”μ†Œλ₯Ό κ΅¬ν•˜λŠ” 것은 즉 λͺ‡κ°œμ˜ κ΅¬μ—­μœΌλ‘œ λ‚˜λˆ„μ–΄μ Έ μžˆλŠ”μ§€ κ΅¬ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€.

κ·Έλž˜ν”„λ₯Ό μœ„μ™€ 같이 ν‘œν˜„ν–ˆμ„λ•Œ 2개의 μ˜μ—­μœΌλ‘œ 이루어져 μžˆμŠ΅λ‹ˆλ‹€. DFS, BFS λͺ¨λ‘ μ‚¬μš©ν•΄μ„œ ν’€μˆ˜ μžˆλŠ” λ¬Έμ œμž…λ‹ˆλ‹€. λ„ˆλΉ„ μš°μ„  탐색 BFS둜 문제λ₯Ό ν’€μ–΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

1. κ·Έλž˜ν”„ μ—°κ²° μ •λ³΄μš© ν–‰λ ¬ 생성
2. BFSλ₯Ό 톡해 λ°©λ¬Έν•œ λ…Έλ“œμΈμ§€ ν™•μΈν•˜λ©΄μ„œ λ„ˆλΉ„μš°μ„  탐색

 

이번 λ¬Έμ œμ—μ„œλŠ” κ·Έλž˜ν”„ 연결정보λ₯Ό 2차원 배열에 μ €μž₯ν–ˆμ§€λ§Œ, 인접행렬식이 μ•„λ‹Œ μ—΄κ²°λœ μ •λ³΄λ§Œ λ“€μ–΄μžˆλŠ” μΈμ ‘λ¦¬μŠ€νŠΈ ν˜•μ‹μœΌλ‘œ μ €μž₯ν–ˆμŠ΅λ‹ˆλ‹€. λ…Έλ“œμ˜ 수λ₯Ό N, κ°„μ„ μ˜ 수λ₯Ό E라고 ν–ˆμ„ λ•Œ μ΅œμ„ , μ΅œμ•… λͺ¨λ“œ μ‹œκ°„λ³΅μž‘λ„ O(N+E)둜 κ³„μ‚°λ©λ‹ˆλ‹€. λ„ˆλΉ„ μš°μ„  탐색을 μ§„ν–‰ν•˜λ©΄μ„œ 각 λ…Έλ“œλŠ” ν•œλ²ˆμ”© λ°©λ¬Έν•˜κ³  κ°„μ„ μ˜ 수만큼 탐색을 ν•©λ‹ˆλ‹€.

 

 

파이썬 μ½”λ“œ

λŒ“κΈ€