ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
๋ฌธ์ ์์๋ N๋ช ์ ์ฌ๋์ด ์๊ณ , ์ธ ์ฌ๋์ ์ ํํ ๋ ์ธ ์ฌ๋์ด ๋ชจ๋ ์น๊ตฌ์ด๊ณ ์ธ ์ฌ๋์ ์น๊ตฌ ์์ ํฉ์ด ์ต์๊ฐ ๋๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์ ๋ฐํํ์ฌ์ผ ํ๋ค. ๋ฌธ์ ์ ์กฐ๊ฑด์๋ ์ธ ์ฌ๋์ ์ ํํ ๊ฒฝ์ฐ ์ธ ์ฌ๋์ ์น๊ตฌ์์ ์ ์ธํด์ผ ํ๋ค๋ ์กฐ๊ฑด์ด ์๋ค. ์ฒ์์๋ ๋ฌธ์ ๋ฅผ `DFS`๋ฅผ ํตํด ์ ๊ทผํด์ผ ํ์ง ์๋ ๋ผ๊ณ ์๊ฐํ์๋๋ฐ ์ธ ์ฌ๋์ ์ ํํ๋ ๊ฒ์ `3์ค ๋ฐ๋ณต๋ฌธ`์ ํตํด ๊ฒฝ์ฐ๋ฅผ ํ์ํ๋ฉด ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ์ง ์๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
์ฝ๋
from sys import stdin
from math import inf
if __name__ == '__main__':
answer = inf
n, m = map(int, stdin.readline().split())
relation = [[False] * (n + 1) for _ in range(n + 1)]
friends = [0] * (n + 1)
# ์น๊ตฌ ๊ด๊ณ์ ์น๊ตฌ ์๋ฅผ ์ ์ฅํจ.
for i in range(m):
me, my_friend = map(int, stdin.readline().split())
relation[me][my_friend] = True
relation[my_friend][me] = True
friends[me] += 1
friends[my_friend] += 1
# 3์ค for ๋ฌธ์ผ๋ก ์น๊ตฌ ์ธ ๋ช
์ ์ ํํ์ฌ ํ์.
for i in range(n + 1):
for j in range(i + 1, n + 1):
# ์ฒซ๋ฒ์งธ ์น๊ตฌ ๋ง์กฑ.
if relation[i][j]:
for k in range(j + 1, n + 1):
# ๋๋ฒ์งธ, ์ธ๋ฒ์งธ ์น๊ตฌ ๋ง์กฑ
if relation[i][k] and relation[j][k]:
# [B, C], [A, C], [A, B]์ ๊ฐ์ด ์ฐ๊ฒฐ๋ ์น๊ตฌ 6๋ช
์ ์ ์ธํด์ผ ํจ.
answer = min(answer, friends[i] + friends[j] + friends[k] - 6)
print(-1 if answer == inf else answer)
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 19236 ์ฒญ์๋ ์์ด (0) | 2020.10.13 |
---|---|
๋ฐฑ์ค: 16236 ์๊ธฐ ์์ด (0) | 2020.10.12 |
๋ฐฑ์ค: 16943 ์ซ์ ์ฌ๋ฐฐ์น (2) | 2020.10.10 |
๋ฐฑ์ค: 2133 ํ์ผ ์ฑ์ฐ๊ธฐ (0) | 2020.10.09 |
๋ฐฑ์ค: 2579 ๊ณ๋จ ์ค๋ฅด๊ธฐ (0) | 2020.10.06 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ