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

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

빠른 다리

시간 제한2초메모리 제한1024 MB

요약
k×k 격자와 이동 시간을 줄이는 다리 n개가 주어질 때, 모든 칸 쌍의 최단 거리 합을 998244353으로 나눈 나머지를 구합니다.
난이도

어려움10점 중 10점

유형
최단 경로, 정렬, 수학, 조합론
정답자
아직 제출이 없습니다

문제

k×kk \times k 크기의 정사각형 도시가 있다. 각 칸에는 집이 정확히 하나씩 있다.

사람들은 변을 공유하는 인접한 칸으로 1 단위 시간에 이동할 수 있다.

정부는 도시를 더 편리하게 만들기 위해 nn개의 빠른 다리를 건설하기로 했다. 각 빠른 다리는 두 칸 (x1,y1)(x_1, y_1)과 (x2,y2)(x_2, y_2)를 잇고, x1≠x2x_1 \neq x_2이며 y1≠y2y_1 \neq y_2이다. 사람들은 다리의 한쪽 끝에서 다른 쪽 끝까지 ∣x1−x2∣+∣y1−y2∣−1|x_1 - x_2| + |y_1 - y_2| - 1 단위 시간에 이동할 수 있다.

도시가 얼마나 빨라졌는지 분석하기 위해 모든 칸 쌍 사이의 최단 거리의 합을 구하라. 합이 클 수 있으므로 998 244 353998\,244\,353으로 나눈 나머지를 출력한다.

입력

첫 줄에 두 정수 nn과 kk가 주어진다 (0≤n≤5000 \leq n \leq 500, 2≤k≤1092 \leq k \leq 10^9). nn은 다리의 수, kk는 도시의 크기다.

이어지는 nn개의 줄에는 네 정수 x1x_1, y1y_1, x2x_2, y2y_2가 주어진다 (1≤x1<x2≤k1 \leq x_1 < x_2 \leq k, 1≤y1,y2≤k1 \leq y_1, y_2 \leq k, y1≠y2y_1 \neq y_2). 모든 튜플 (x1,y1,x2,y2)(x_1, y_1, x_2, y_2)는 서로 다르다.

출력

모든 칸 쌍의 최단 거리 합을 998 244 353998\,244\,353으로 나눈 나머지 한 정수를 출력한다.

힌트

첫 번째 입력에서는 모든 칸 쌍의 최단 거리가 1이므로 합은 6이다.

예제3

  1. 예제 1

    입력
    2 2
    1 1 2 2
    1 2 2 1
    
    예상 출력
    6
    
  2. 예제 2

    입력
    0 1000000000
    
    예상 출력
    916520226
    
  3. 예제 3

    입력
    5 5
    1 1 3 3
    3 3 5 1
    3 3 4 5
    3 3 5 4
    1 5 3 3
    
    예상 출력
    946