60010 통행료 Gold III

시간 제한: 1초 메모리 제한: 2048MB

문제

KOI 도시는 11번 건물부터 NN번 건물까지 NN개의 건물로 이루어져 있으며, 11번 도로부터 MM번 도로까지 MM개의 양방향 도로가 각 건물을 연결하고 있다. 각 도로는 서로 다른 두 건물을 연결하며, 이 중 ii번 도로는 uiu_i번 건물과 viv_i번 건물을 양방향으로 연결한다. 이때, 임의의 두 건물 사이를 도로들을 이용해 오갈 수 있다.

원래 KOI 도시의 각 도로는 무료로 이용할 수 있었다. 즉, 모든 도로의 통행료는 00원이었다. 그러나, KOI 도시의 시장인 정올이는 KOI 도시의 재정난을 극복하기 위해, MM일에 걸쳐 각 도로에 통행료를 부과하려고 한다. 구체적으로, 정올이는 ii번째 날에 ii번 도로의 통행료를 11원으로 변경한다. 이에 따라, MM일이 모두 지나면 모든 도로의 통행료는 11원이 될 것이다.

aa번 건물과 bb번 건물 사이의 최소 이동 비용aa번 건물에서 bb번 건물로 이동하기 위해 필요한 총 통행료의 최솟값으로 정의하고, f(a,b)f(a, b)로 표기하자. a=ba = b라면 f(a,b)=0f(a, b) = 0이다.

도로망의 총 비용은, 가능한 모든 두 건물의 쌍 사이의 최소 이동 비용의 합으로 정의한다. 즉, 모든 1a,bN1 ≤ a, b ≤ N인 자연수 aabb에 대해 f(a,b)f(a, b)의 값을 계산한 후 이를 모두 합친 값이 도로망의 총 비용이다. 이를 수학 기호로 표기하면, 도로망의 총 비용은 a=1Nb=1Nf(a,b)\sum_{a=1}^{N}\sum_{b=1}^{N}f(a, b)가 된다.

정올이는 통행료 변화가 시민들에게 어떤 영향을 줄지 분석하려고 한다. 당신은 정올이를 도와, ii번째 날이 끝난 이후 도로망의 총 비용을 계산해야 한다.

입력

첫 번째 줄에 NNMM이 공백으로 구분되어 주어진다.

다음 MM개의 줄에는 도로의 정보가 주어진다. 이 중 ii (1iM1 ≤ i ≤ M)번째 줄에는 두 정수 uiu_i, viv_i가 공백으로 구분되어 주어진다.

출력

MM개의 줄을 출력한다. 이 중 ii (1iM1 ≤ i ≤ M) 번째 줄에는, ii번째 날이 끝난 이후 도로망의 총 비용을 출력한다.

제한

  • 주어지는 모든 수는 정수이다.
  • 2N5002 ≤ N ≤ 500
  • N1MN(N1)2N − 1 ≤ M ≤ \frac{N(N-1)}{2}
  • 1iM1 ≤ i ≤ M에 대해서, uiviu_i ≠ v_i를 만족한다.
  • 1iM1 ≤ i ≤ M에 대해서, 1ui,viN1 ≤ u_i , v_i ≤ N을 만족한다.
  • 임의의 서로 다른 두 건물을 잇는 도로는 최대 하나이다.
  • 임의의 두 건물 사이를 도로들을 이용해 오갈 수 있다.

서브태스크

번호배점제한
110N5N ≤ 5.
215N50N ≤ 50.
330M500M ≤ 500.
445추가 제약 조건 없음.

힌트

예제 1 설명

44일이 지난 뒤 각 건물 간의 최소 이동 비용은 다음과 같은 표로 나타낼 수 있다.

11번 건물22번 건물33번 건물44번 건물
11번 건물00111122
22번 건물11001122
33번 건물11110011
44번 건물22221100

따라서, 44번째 날이 끝난 이후 도로망의 총 비용은 0+1+1+2+1+0+1+2+1+1+0+1+2+2+1+0=160 + 1 + 1 + 2 + 1 + 0 + 1 + 2 + 1 + 1 + 0 + 1 + 2 + 2 + 1 + 0 = 16이 된다.

예제 입출력

예제 입력 1
4 4
1 2
2 3
3 1
3 4
예제 출력 1
0
6
10
16
예제 입력 2
4 4
2 3
3 1
3 4
1 2
예제 출력 2
0
8
14
16

출처

올림피아드 한국정보올림피아드 KOI 2025 2차 초등부 3번
solution.cpp
에디터 불러오는 중...