아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

친구 사귀기는 즐거워

시간 제한1초메모리 제한512 MB

요약
대사 화살표로 이루어진 방향 그래프에서 중재자 x와 (x,p), (x,q) 화살표가 있는 두 나라 p, q를 골라 (p,q)와 (q,p)를 추가하는 회담을 반복할 때 만들 수 있는 화살표 수의 최댓값을 구한다.
난이도

어려움10점 중 8점

유형
그래프, 유니온 파인드, 그리디, 구현
정답자
아직 제출이 없습니다

문제

당신은 역사의 뒤편에서 활동하는 에이전트이며, 세계 평화를 위해 매일 활동을 이어 가고 있다. 이 세계에는 NN개의 나라가 있고, 각 나라에는 1부터 NN까지의 서로 다른 번호가 붙어 있다. 이 NN개의 나라 사이에 가능한 한 우호적인 관계를 맺게 하는 것이 당신의 목적이다. 당신은 에이전트 업무 계획을 세우기 위해 현재의 국제 관계를 나타내는 그림을 그렸다.

당신은 큰 도화지 한 장을 준비하고, 먼저 그 위에 각 나라를 나타내는 NN개의 점을 찍었다. 다음으로 현재의 국제 관계를 나타내기 위해 두 나라를 잇는 화살표 MM개를 그렸다. 나라 aa를 나타내는 점에서 다른 나라 bb를 나타내는 점으로 향하는 화살표는 "현재 나라 aa가 나라 bb에 대사를 파견하고 있다"는 것을 나타낸다. 이하에서 나라 aa를 나타내는 점에서 나라 bb를 나타내는 점으로 향하는 화살표를 화살표 (a,b)(a, b)라고 부른다. 이렇게 그린 NN개의 점과 MM개의 화살표가 현재의 국제 관계를 나타내는 그림이다.

나라 사이의 우호 관계의 계기로, 두 나라 사이의 우호 조약 체결 회의(이하 간단히 "회의"라고 한다)를 열기로 하자. 어떤 두 나라 pp, qq가 회의를 열기 위해서는 두 나라 모두에 대사를 파견하고 있는 나라 xx가 중재자로 필요하다. 그리고 회의를 연 뒤 각 나라는 상대국에 대사를 파견한다. 즉, 나라 pp와 나라 qq가 회의를 열기 위해서는 화살표 (x,p)(x, p)와 화살표 (x,q)(x, q)가 있는 나라 xx가 존재해야 하며, 회의를 연 뒤에는 화살표 (p,q)(p, q)와 화살표 (q,p)(q, p)를 새로 그려 넣는다. 다만 화살표가 이미 그려져 있는 경우에는 새로 그려 넣지 않는다.

당신의 일은 회의를 열 수 있는 두 나라와 그 회의를 중재할 나라를 골라 회의를 열게 하는 것이다. 그림을 사용해 이 일을 시뮬레이션할 때, 세계가 얼마나 평화에 가까워졌는지를 도화지 위의 화살표 개수를 기준으로 생각하기로 했다. 즉, 두 나라를 골라 회의를 열게 하는 일을 반복해서 도화지 위의 화살표 개수를 최대 몇 개까지 만들 수 있는지 알고 싶다.

이 세계에 있는 나라의 개수와 현재의 국제 관계를 나타내는 정보가 주어질 때, 두 나라를 골라 회의를 열게 하는 일을 반복해서 도화지 위의 화살표 개수를 최대 몇 개까지 만들 수 있는지 구하는 프로그램을 작성하시오.

입력

표준 입력에서 다음 입력을 읽는다.

  • 1번째 줄에는 정수 NN, MM이 공백을 구분자로 하여 쓰여 있다. NN은 도화지 위의 점의 개수(이 세계에 있는 나라의 개수), MM은 도화지 위의 화살표의 개수를 나타낸다.
  • 이어지는 MM개의 줄에는 도화지 위의 화살표 정보가 각각 쓰여 있다. 이 중 ii번째 줄 (1≤i≤M1 \le i \le M)에는 두 정수 AiA_i, BiB_i가 공백을 구분자로 하여 쓰여 있다. 이는 도화지 위에 나라 AiA_i를 나타내는 점에서 나라 BiB_i를 나타내는 점으로 향하는 화살표가 그려져 있다는 것, 즉 나라 AiA_i가 나라 BiB_i에 대사를 파견하고 있다는 것을 나타낸다.

출력

표준 출력에 실현할 수 있는 화살표 개수의 최댓값을 1줄로 출력하라. 화살표 개수에는 회의로 새로 그려 넣은 것만이 아니라 현재 이미 그려져 있는 것도 센다는 점에 주의하라.

제한

  • 1≤N≤100 0001 \le N \le 100\,000.
  • 0≤M≤200 0000 \le M \le 200\,000.
  • 1≤Ai≤N1 \le A_i \le N (1≤i≤M1 \le i \le M).
  • 1≤Bi≤N1 \le B_i \le N (1≤i≤M1 \le i \le M).
  • Ai≠BiA_i \ne B_i (1≤i≤M1 \le i \le M).
  • (Ai,Bi)≠(Aj,Bj)(A_i, B_i) \ne (A_j, B_j) (1≤i<j≤M1 \le i < j \le M).

예제1

  1. 예제 1

    입력
    5 4
    1 2
    1 3
    4 3
    4 5
    
    예상 출력
    10