๐ก ์กฐ๊ฑด
- ๋ฌด๊ฒ๊ฐ ์๋ก ๋ค๋ฅธ N ๊ฐ์ ๋ฌผ๊ฑด์ด ์๋ค. ๊ฐ ๋ฌผ๊ฑด์ 1๋ถํฐ N ๊น์ง ๋ฒํธ๊ฐ ๋งค๊ฒจ์ ธ ์๋ค.
์ฐ๋ฆฌ๋ ์ผ๋ถ ๋ฌผ๊ฑด ์์ ๋ํด์ ์ํ ์ ์ธ๋ก ์ด๋ค ๊ฒ์ด ๋ฌด๊ฑฐ์ด ๊ฒ์ธ์ง๋ฅผ ์ธก์ ํ ๊ฒฐ๊ณผํ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
์ด ๊ฒฐ๊ณผํ๋ก๋ถํฐ ์ง์ ์ธก์ ํ์ง ์์ ๋ฌผ๊ฑด ์์ ๋น๊ต ๊ฒฐ๊ณผ๋ฅผ ์์๋ผ ์๋ ์๊ณ ์์๋ด์ง ๋ชปํ ์๋ ์๋ค.
์๋ฅผ ๋ค์ด, ์ด 6๊ฐ์ ๋ฌผ๊ฑด์ด ์๊ณ , ๋ค์ 5๊ฐ์ ๋น๊ต ๊ฒฐ๊ณผ๊ฐ ์ฃผ์ด์ก๋ค๊ณ ๊ฐ์ ํ์. ([1]์ 1๋ฒ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ๋ฅผ ์๋ฏธํ๋ค.)
- [1]>[2], [2]>[3], [3]>[4], [5]>[4], [6]>[5]
- ์ฐ๋ฆฌ๋ [2]>[3], [3]>[4]๋ก๋ถํฐ [2]>[4]๋ผ๋ ๊ฒ์ ์ ์ ์๋ค.
ํ์ง๋ง, ๋ฌผ๊ฑด 2์ ๋ฌผ๊ฑด 6์ ๋น๊ตํ๋ ๊ฒฝ์ฐ, ์์์ ๊ฒฐ๊ณผ๋ง์ผ๋ก๋ ์ด๋ ๊ฒ์ด ๋ฌด๊ฑฐ์ด์ง ์ ์ ์๋ค.
์ด์ ๊ฐ์ด, ๋ฌผ๊ฑด 2๋ ๋ฌผ๊ฑด 1, 3, 4์์ ๋น๊ต ๊ฒฐ๊ณผ๋ ์ ์ ์์ง๋ง, ๋ฌผ๊ฑด 5, 6๊ณผ์ ๋น๊ต ๊ฒฐ๊ณผ๋ ์ ์ ์๋ค.
๋ฌผ๊ฑด 4๋ ๋ชจ๋ ๋ค๋ฅธ ๋ฌผ๊ฑด๊ณผ์ ๋น๊ต ๊ฒฐ๊ณผ๋ฅผ ์ ์ ์๋ค.
- ๋น๊ต ๊ฒฐ๊ณผ๊ฐ ๋ชจ์๋๋ ์
๋ ฅ์ ์๋ค๊ณ ๊ฐ์ ํ๋ค. ์ ์์ ์ ๊ธฐ์กด ์ธก์ ๊ฒฐ๊ณผ์ [3]>[1]์ด ์ถ๊ฐ๋์๋ค๊ณ ๊ฐ์ ํ์.
์ด ๊ฒฝ์ฐ [1]>[2], [2]>[3]์ด๋ฏ๋ก ์ฐ๋ฆฌ๋ [1]>[3]์ด๋ผ๋ ๊ฒ์ ์์ธกํ ์ ์๋๋ฐ,
์ด๋ ๊ธฐ์กด์ ์ธก์ ๋ ๊ฒฐ๊ณผ [3]>[1]๊ณผ ์๋ก ๋ชจ์์ด๋ฏ๋ก ์ด๋ฌํ ์
๋ ฅ์ ๊ฐ๋ฅํ์ง ์๋ค.
- ์ฒซ ์ค์๋ ๋ฌผ๊ฑด์ ๊ฐ์ N ์ด ์ฃผ์ด์ง๊ณ , ๋์งธ ์ค์๋ ๋ฏธ๋ฆฌ ์ธก์ ๋ ๋ฌผ๊ฑด ์์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋ค.
๋จ, 5 ≤ N ≤ 100 ์ด๊ณ , 0 ≤ M ≤ 2,000์ด๋ค. ๋ค์ M๊ฐ์ ์ค์ ๋ฏธ๋ฆฌ ์ธก์ ๋ ๋น๊ต ๊ฒฐ๊ณผ๊ฐ ํ ์ค์ ํ๋์ฉ ์ฃผ์ด์ง๋ค.
๊ฐ ์ค์๋ ์ธก์ ๋ ๋ฌผ๊ฑด ๋ฒํธ๋ฅผ ๋ํ๋ด๋ ๋ ๊ฐ์ ์ ์๊ฐ ๊ณต๋ฐฑ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ฉฐ, ์์ ๋ฌผ๊ฑด์ด ๋ค์ ๋ฌผ๊ฑด๋ณด๋ค ๋ ๋ฌด๊ฒ๋ค.
- ๋ฌผ๊ฑด์ ๊ฐ์ N ๊ณผ ์ผ๋ถ ๋ฌผ๊ฑด ์์ ๋น๊ต ๊ฒฐ๊ณผ๊ฐ ์ฃผ์ด์ก์ ๋,
๊ฐ ๋ฌผ๊ฑด์ ๋ํด์ ๊ทธ ๋ฌผ๊ฑด๊ณผ์ ๋น๊ต ๊ฒฐ๊ณผ๋ฅผ ์ ์ ์๋ ๋ฌผ๊ฑด์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์
- ํ๋ก์ด๋ ์์ฌ ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin
n = int(stdin.readline())
m = int(stdin.readline())
arr = [[False] * (n + 1) for _ in range(n + 1)]
for _ in range(m):
a, b = map(int, stdin.readline().split())
arr[a][b] = True
for k in range(1, n + 1):
for i in range(1, n + 1):
for j in range(1, n + 1):
if arr[i][k] and arr[k][j]:
arr[i][j] = True
for i in range(1, n + 1):
cnt = 0
for j in range(1, n + 1):
if not arr[i][j] and not arr[j][i]:
cnt += 1
print(cnt - 1)
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
9
11
2 1
3 1
2 8
2 9
7 8
4 5
6 7
6 3
1 7
6 2
1 9
์คํ๊ฒฐ๊ณผ
2
3
3
7
7
2
3
3
4
โจ๏ธ ๋ฌธ์ ํ์ด
- ํ๋ก์ด๋ ์์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ํธ๋ ๋ฌธ์ ์ด๋ค. ๋ฌธ์ ๋ฅผ ์ฐธ๊ณ ํด๋ณด๋ฉด, N์ ๋ฒ์๊ฐ ์ต๋ 100, M์ ์ต๋ 2000 ์ด๋ค.
- (1) ๋ฒ์ ๋ค๋ฅธ ๋ง๋ก ํด๋ณด์๋ฉด, ๋
ธ๋๊ฐ ์ต๋ 100๊ฐ, ๊ฐ์ ์ ๊ฐ์๊ฐ ์ต๋ 2000๊ฐ ์
๋ ฅ์ ๋ฐ์ ์ ์๋ค๋ ๊ฒ์ด๋ค.
- ํ๋ก์ด๋ ์์ฌ์ ์๊ฐ๋ณต์ก๋๋ O(N^3) ์ด๋ฉฐ, ์ด ๋ฌธ์ ์์๋ ์ต๋ 100 * 100 * 100 ๋งํผ์ ์ฐ์ฐ์ด ํ์ํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
- ๋ฌผ๊ฑด ์์ ๋น๊ต๊ฒฐ๊ณผ๋ฅผ ์
๋ ฅ๋ฐ์ ๊ทธ๋ํ์ ์
๋ ฅํ๊ณ , ์ด๋ฅผ ํ๋ก์ด๋ ์์ฌ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์๋ก ๋น๊ต๊ฒฐ๊ณผ๋ฅผ ์ ์ ์๋ ๊ฒ๋ค์ ์ถ๋ ฅํ๋ฉด ๋๋ค.