Algorithm

[๋ฐฑ์ค€] 5567. ๊ฒฐํ˜ผ์‹ python

๐Ÿณ ๋งํฌ

๋ฐฑ์ค€ ๊ฒฐํ˜ผ์‹

๐Ÿ• ๋ฌธ์ œ

์ƒ๊ทผ์ด๋Š” ์ž์‹ ์˜ ๊ฒฐํ˜ผ์‹์— ํ•™๊ต ๋™๊ธฐ ์ค‘ ์ž์‹ ์˜ ์นœ๊ตฌ์™€ ์นœ๊ตฌ์˜ ์นœ๊ตฌ๋ฅผ ์ดˆ๋Œ€ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ƒ๊ทผ์ด์˜ ๋™๊ธฐ๋Š” ๋ชจ๋‘ N๋ช…์ด๊ณ , ์ด ํ•™์ƒ๋“ค์˜ ํ•™๋ฒˆ์€ ๋ชจ๋‘ 1๋ถ€ํ„ฐ N๊นŒ์ง€์ด๋‹ค. ์ƒ๊ทผ์ด์˜ ํ•™๋ฒˆ์€ 1์ด๋‹ค.

์ƒ๊ทผ์ด๋Š” ๋™๊ธฐ๋“ค์˜ ์นœ๊ตฌ ๊ด€๊ณ„๋ฅผ ๋ชจ๋‘ ์กฐ์‚ฌํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฒฐํ˜ผ์‹์— ์ดˆ๋Œ€ํ•  ์‚ฌ๋žŒ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

๐Ÿพ ํ’€์ด ๋ฐฉ๋ฒ•

์ƒ๊ทผ์ด์™€ ์นœ๊ตฌ์ธ ์นœ๊ตฌ๋“ค์„ f์— ์ €์žฅํ•ด๋†“๊ณ , f์™€ ์นœ๊ตฌ์ธ ์‚ฌ๋žŒ๋งŒ ํ™•์ธํ•œ ๋’ค ์ค‘๋ณต๋˜์ง€ ์•Š๋„๋ก set์— ์ €์žฅํ•œ๋‹ค.

์†Œ์Šค์ฝ”๋“œ

import sys
sys.stdin = open("input.txt","rt")

n = int(sys.stdin.readline().strip())
m = int(sys.stdin.readline().strip())
friends = [[0]*n for _ in range(n)]

res = set()
f = list()
for _ in range(m):
    a, b = map(int,sys.stdin.readline().split())
    if a == 1:
        f.append(b-1)
        res.add(b-1)
    friends[a-1][b-1] = 1
    friends[b-1][a-1] = 1
while f:
    num = f.pop()
    for i in range(1,n):
        if friends[num][i] == 1:
            res.add(i)

print(len(res))