접근 방법
- 먼저 양방향으로 입력값을 받아주었다.
- 입력받은 값을 1부터 차례대로 3중 반복문을 돌렸다.
- 그래서 i(첫번째 점)이 info[j] (두번째 점과 연결된 점들의 정보)과 연결되어있고, j(두번째 점)이 info[k] (세번째 점과 연결된 점들의 정보), 그리고 다시 k(세번째 점)이 info[i] (첫번째 점과 연결된 점들의 정보)로 다시 연결되면 삼각형이고
- res에 +1을 해주었다.
- 같은 방식으로 2번, 3번점 계속해서 확인하는데, 3중반복문의 시작점을 작은 수 이후의 점들을 보기때문에 딱히 중복은 발생하지 않는다.
코드
T = int(input())
for t in range(1,T+1):
N, M = map(int,input().split())
info = [[] for _ in range(N+1)]
for _ in range(M):
x, y = map(int,input().split())
info[x].append(y)
info[y].append(x)
res = 0
for i in range(1,N+1):
for j in range(i+1,N+1):
for k in range(j+1,N+1):
if i in info[j] and j in info[k] and k in info[i]:
res += 1
print("#{} {}".format(t,res))