듀애슬론

정점이 1e5개인 무방향 그래프에서 s, c, f를 이 순서로 지나는 단순 경로가 존재하는 서로 다른 정점 세 쌍 (s, c, f)의 개수를 센다.

어려움8그래프BFSDFS동적 계획법아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

바이트버그의 도로망은 교차로 nn개와 교차로 두 곳을 잇는 양방향 도로 mm개로 이루어져 있다. 바이트버그가 이번 듀애슬론 대회의 개최지로 정해졌다. 이 대회는 달리기 구간을 먼저 뛰고 사이클 구간을 이어서 달린다.

대회 경로는 이렇게 정한다. 먼저 서로 다른 교차로 세 곳 ss, cc, ff를 골라 각각 출발 지점, 전환 지점, 결승 지점으로 삼는다. 그다음 ss에서 출발해 cc를 지나 ff에서 끝나는 경로를 만든다. 안전을 위해 경로는 어느 교차로도 두 번 지나지 않는다.

시장은 경로를 설계하기 전에 경로를 만들 수 있는 (s,c,f)(s, c, f)가 몇 개인지 세어 보려고 한다. 그 개수를 구하라.

입력

첫째 줄에 교차로의 수 nn과 도로의 수 mm이 주어진다 (1n1051 \le n \le 10^5, 1m2×1051 \le m \le 2 \times 10^5). 다음 mm개 줄에는 도로의 정보가 한 줄에 하나씩 주어진다. 각 줄에는 그 도로가 잇는 두 교차로의 번호 viv_iuiu_i가 주어진다 (1vi,uin1 \le v_i, u_i \le n, viuiv_i \ne u_i). 교차로 두 곳을 직접 잇는 도로는 많아야 한 개다.

출력

경로를 만들 수 있는 (s,c,f)(s, c, f)의 개수를 출력한다.

힌트

첫 번째 예제에서 조건을 만족하는 (s,c,f)(s, c, f)(1,2,3)(1, 2, 3), (1,2,4)(1, 2, 4), (1,3,4)(1, 3, 4), (2,3,4)(2, 3, 4), (3,2,1)(3, 2, 1), (4,2,1)(4, 2, 1), (4,3,1)(4, 3, 1), (4,3,2)(4, 3, 2)로 모두 8개다.

두 번째 예제에서 조건을 만족하는 (s,c,f)(s, c, f)(1,2,3)(1, 2, 3), (1,2,4)(1, 2, 4), (1,3,4)(1, 3, 4), (1,4,3)(1, 4, 3), (2,3,4)(2, 3, 4), (2,4,3)(2, 4, 3), (3,2,1)(3, 2, 1), (3,2,4)(3, 2, 4), (3,4,1)(3, 4, 1), (3,4,2)(3, 4, 2), (4,2,1)(4, 2, 1), (4,2,3)(4, 2, 3), (4,3,1)(4, 3, 1), (4,3,2)(4, 3, 2)로 모두 14개다.