๋ฌธ์
https://www.acmicpc.net/problem/2653
2653๋ฒ: ์์ ๋ ์ง๋จ
์ฃผ์ด์ง ์ ๋ ฅ์ด ์์ ๋์ง ์์ ์ง๋จ์ ๊ฒฝ์ฐ๋ ์ฒซ์ค์ ๋น์นธ ์์ด 0์ ์ถ๋ ฅํ๋ค. ์์ ๋ ์ง๋จ์ ๊ฒฝ์ฐ๋ ์ฒซ์ค์ ์๋ก ์ข์ํ๋ ์์ง๋จ์ ์๋ฅผ ๋น์นธ ์์ด ์ถ๋ ฅํ๊ณ , ๊ทธ ๋ค์ ์ค๋ถํฐ๋ ๊ฐ ์ค๋ง๋ค ๊ฐ ์
www.acmicpc.net
ํด์ค
๋ฌธ์ ์ค๋ช ๊ณผ ์กฐ๊ฑด์ด ๋ณต์กํ๊ณ ๊ธธ๊ฒ ์ค๋ช ๋์ด ์๋๋ฐ, ํต์ฌ์ ๊ฐ๋จํ๋ค.
1. ์ฌ๋ ๊ฐ์ ์ฐํธ๋๊ฐ ๋ค๋ฅด๋ฉด ๋ถ์์ ํ ์ง๋จ์ด๋ค.
์ด ๋ถ๋ถ์ ๊ฐ์ ์ ์ผ๋ก ํํํ๊ณ ์๋๋ฐ, ์๋ก ์ข์ํ๋ ์ฌ๋๋ผ๋ฆฌ ๊ทธ๋ฃน์ ๋๋๋ฉด ์์ ๋ ์ง๋จ์ ๋ง๋ค ์ ์๋๋ฐ ์๋ก์ ์ฐํธ๋๊ฐ ๋ค๋ฅด๋ฉด ๊ทธ๋ฃน์ ๋๋ ์๊ฐ ์๋ค.
2. DFS๋ก ํ์ํ๋ฉด์ ๊ทธ๋ฃนํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ค.
ํ ๋ฒ์ DFS ํ์์์ ์ฐพ์์ง๋ ์ฌ๋์ ๊ฐ์ ๊ทธ๋ฃน์ด๋ค.
ํ์ด
import sys; readline = sys.stdin.readline
n = int(readline())
relation = [list(map(int, readline().split())) for _ in range(n)]
stable = True
for i in range(n):
for j in range(i + 1, n):
if relation[i][j] != relation[j][i]:
stable = False
break
if not stable: break
visited = [False] * n
group = []
count = 0
for i in range(n):
if visited[i]:
continue
visited[i] = True
count += 1
group.append([i+1])
g_index = count - 1
for j in range(n):
if relation[i][j] != 0 or i == j:
continue
group[g_index].append(j+1)
visited[j] = True
for g in group:
if len(g) < 2:
stable = False
break
if stable:
print(count)
for g in group:
print(*g)
else:
print(0)
'๐ฅ Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 14215๋ฒ: ์ธ ๋ง๋ - ํ์ด์ฌ (0) | 2022.11.16 |
---|