#CF295B. Greg 与图

Greg 与图

Greg 与图

  • 时间限制:3 秒
  • 内存限制:256 MiB

题目描述

给定一个 nn 个顶点的完整有向带权图。游戏按排列 x1,x2,…,xnx_1,x_2,\ldots,x_n 依次删除顶点;删除顶点时也删除与它关联的所有边。

在每次删除之前,求当前所有未删除顶点之间的最短路长度之和。求和对象是有序点对 (u,v)(u,v),包含 u=vu=v(其贡献为 00)。最短路只能经过尚未删除的顶点。

输入格式

第一行包含 nn。随后 nn 行给出邻接矩阵 aa,最后一行给出删除排列 xx。

输出格式

输出 nn 个整数,第 ii 个数表示删除 xix_i 之前的最短路总和。

样例输入 1

1
0
1

样例输出 1

0

样例输入 2

2
0 5
4 0
1 2

样例输出 2

9 0

样例输入 3

4
0 3 1 1
6 0 400 1
2 4 0 1
1 1 1 0
4 1 2 3

样例输出 3

17 23 404 0

数据范围

1≤n≤5001\le n\le500,aii=0a_{ii}=0,1≤aij≤1051\le a_{ij}\le10^5(i≠ji\ne j),xx 是 1…n1\ldots n 的排列。

子任务编号 分值 特殊限制
1 30 n≤8n\le8
2 aij=0a_{ij}=0(i=ji=j),否则 aij=(j−i) mod na_{ij}=(j-i)\bmod n
3 40 无特殊限制