We will find a way, we always have.

-interstellar

Problem Solving/๋ฐฑ์ค€

[๋ฐฑ์ค€] 11403๋ฒˆ: ๊ฒฝ๋กœ ์ฐพ๊ธฐ - ํŒŒ์ด์ฌ

Redddy 2022. 6. 19. 23:56

๐Ÿ”ˆ ๋ฌธ์ œ

๊ฐ€์ค‘์น˜ ์—†๋Š” ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ G๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ชจ๋“  ์ •์  (i, j)์— ๋Œ€ํ•ด์„œ, i์—์„œ j๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

๐Ÿ“์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ •์ ์˜ ๊ฐœ์ˆ˜ N (1 ≤ N ≤ 100)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ ์ค„์—๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ธ์ ‘ ํ–‰๋ ฌ์ด ์ฃผ์–ด์ง„๋‹ค. i๋ฒˆ์งธ ์ค„์˜ j๋ฒˆ์งธ ์ˆซ์ž๊ฐ€ 1์ธ ๊ฒฝ์šฐ์—๋Š” i์—์„œ j๋กœ ๊ฐ€๋Š” ๊ฐ„์„ ์ด ์กด์žฌํ•œ๋‹ค๋Š” ๋œป์ด๊ณ , 0์ธ ๊ฒฝ์šฐ๋Š” ์—†๋‹ค๋Š” ๋œป์ด๋‹ค. i๋ฒˆ์งธ ์ค„์˜ i๋ฒˆ์งธ ์ˆซ์ž๋Š” ํ•ญ์ƒ 0์ด๋‹ค.

 

๐Ÿ“‘์ถœ๋ ฅ

์ด N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ์„œ ๋ฌธ์ œ์˜ ์ •๋‹ต์„ ์ธ์ ‘ํ–‰๋ ฌ ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ์ •์  i์—์„œ j๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ๊ฐ€ ์žˆ์œผ๋ฉด i๋ฒˆ์งธ ์ค„์˜ j๋ฒˆ์งธ ์ˆซ์ž๋ฅผ 1๋กœ, ์—†์œผ๋ฉด 0์œผ๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

 

๐Ÿ“š ๋ฌธ์ œ ํ•ด์„

n๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ๊ณ , n๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ์ธ์ ‘ ํ–‰๋ ฌ์ด ์ฃผ์–ด์งˆ๋•Œ, i์—์„œ j๋กœ ๊ฐ€๋Š” ๊ฐ„์„ ์ด ์กด์žฌํ•˜๋ฉด 1, i์—์„œ j๋กœ ๊ฐ€๋Š” ๊ฐ„์„ ์ด ์—†๋‹ค๋ฉด 0์„ ์ธ์ ‘ ํ–‰๋ ฌ์˜ ํ˜•ํƒœ๋กœ ๋‹ค์‹œ ์ถœ๋ ฅํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ์ธ์ ‘ ํ–‰๋ ฌ์ด๋ž€!! ๊ทธ๋ž˜ํ”„์˜ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด ํ–‰์€ ํ˜„์žฌ ๋…ธ๋“œ๋ฅผ ์˜๋ฏธํ•˜๊ณ  ์—ด์€ ๊ฐ€๊ณ ์ž ํ•˜๋Š” ๋…ธ๋“œ๋ฅผ ์˜๋ฏธํ•œ๊ณ , ๊ฐ’์€ ๊ฐ„์„ ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด ๋ฌธ์ œ์—์„œ ์ด ๊ฐ’์ด 1์ด๋ฉด ๋‘˜์€ ์—ฐ๊ฒฐ๊ด€๊ณ„์ธ๊ฒƒ์ด๊ณ , 0์ด๋ฉด ์—ฐ๊ฒฐ๊ด€๊ณ„๊ฐ€ ์—†๋Š” ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์—ฐ๊ฒฐ๊ด€๊ณ„์˜ ์˜๋ฏธ๋Š” i์—์„œ j๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๋” ๊ถ๊ธˆํ•˜๋ฉด ์š” ๊ธ€์„ ํ•œ๋ฒˆ ์ฝ์–ด๋ณด์‹œ๊ธธใ…Ž.ใ…Ž

 

๐Ÿ’ป ์ฝ”๋“œ

import sys
input = sys.stdin.readline

# ์žฌ๊ท€
def dfs(num):
    for i in graph[num]:
        if visited[i] == 0: # ๋ฐฉ๋ฌธํ•œ ์  ์—†๋‹ค๋ฉด ๋ฐฉ๋ฌธ
            visited[i] = 1 # ๋ฐฉ๋ฌธ ์ฒดํฌ
            dfs(i)

n = int(input())
graph = [[] for i in range(n)]
for i in range(n):
    nums = list(map(int,input().rstrip().split()))
    for j in range(n):
        if nums[j] == 1: # i์—์„œ j๋กœ ๊ฐ€๋Š” ๊ฐ„์„ ์ด ์กด์žฌํ•œ๋‹ค๋ฉด
            graph[i].append(j) # ๊ทธ๋ž˜ํ”„์— ์ถ”๊ฐ€
            
for i in range(n):
    visited = [0 for i in range(n)] # ๋ฐฉ๋ฌธ ์ฒดํฌ
    dfs(i) 
    print(*visited)

 

๐Ÿ”— ๋ฌธ์ œ๋งํฌ ๊ฒฝ๋กœ์ฐพ๊ธฐ

 

11403๋ฒˆ: ๊ฒฝ๋กœ ์ฐพ๊ธฐ

๊ฐ€์ค‘์น˜ ์—†๋Š” ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ G๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ชจ๋“  ์ •์  (i, j)์— ๋Œ€ํ•ด์„œ, i์—์„œ j๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

www.acmicpc.net