#P14700. [ICPC 2024 Tehran R] Conference Rides

[ICPC 2024 Tehran R] Conference Rides

题目描述

某会议有 nn 名参会者,编号为 11 到 nn。前 mm 名参会者(编号 11 到 mm)每人拥有一辆车,可以在活动结束后驾车回家。其余 n−mn - m 名没有车的参会者将借助前 mm 名参会者的帮助搭车回家。前 mm 名参会者每人最多可以搭载另一名参会者(从编号 m+1m+1 到 nn 的参会者中选择),并在返回自己家之前先将该人送回家。已知 n+1n+1 个地点(会议厅和 nn 名参会者的家)的距离矩阵 DD。请为有车的参会者安排搭载无车参会者回家的方案,使得所有参会者到达各自家的时间最短。距离矩阵 DD 是一个 (n+1)×(n+1)(n+1) \times (n+1) 的矩阵,其中 D[i][j]D[i][j] 表示从地点 ii 到地点 jj 的预估运输时间。地点 ii(1≤i≤n1 \leq i \leq n)表示第 ii 名参会者的家,会议厅位于地点 n+1n+1。

输入格式

输入的第一行包含两个整数 nn 和 mm(1≤n≤5001 \leq n \leq 500 且 1≤m≤n1 \leq m \leq n)。保证 2m≥n2m \geq n。

接下来的 n+1n+1 行描述了距离矩阵 DD,每行包含 n+1n+1 个整数。输入的第 i+1i+1 行(1≤i,j≤n+11 \leq i, j \leq n+1)的第 jj 个数指定了 D[i][j]D[i][j](0≤D[i][j]≤1080 \leq D[i][j] \leq 10^8)。保证对于任意 1≤i,j,k≤n+11 \leq i, j, k \leq n+1,有 D[i][k]≤D[i][j]+D[j][k]D[i][k] \leq D[i][j] + D[j][k],且当 i=ji = j 时 D[i][j]=0D[i][j] = 0,但 D[i][j]D[i][j] 不一定等于 D[j][i]D[j][i]。

输出格式

输出的第一行应打印所有参会者到达各自家的最短时间。接下来的 mm 行中,每行 ii(1≤i≤m1 \leq i \leq m)应包含一个非负整数 tit_i,表示第 ii 名参会者的驾驶安排。如果 ti=0t_i = 0,则表示该参会者直接驾车回家,不搭载任何其他人。否则(ti>0t_i > 0),表示第 ii 名参会者搭载参会者 tit_i,并在驾车回自己家之前先将该人送回家。每位无车参会者必须恰好由一辆车运送。

3 2
0 1 1 2
2 0 1 3
4 2 0 4
4 3 2 0
4
0
3

提示

翻译由 DeepSeek V3 完成