6005 - Graph

通过次数

6

提交次数

10

Time Limit : 4 秒
Memory Limit : 512 MB

题目背景

handsomer在城市里游荡,由于他很懒他决定只走最短路,同时由于他人如其名怕被打,经过一条路还需要给驻守该路的恶霸交钱……

题目描述

给定一个每条边有两个参数 (长度len,价值value) 的无向图,请输出\frac{n\times(n-1)}{2}个数表示对于每一组点对(i,j),他们之间所有长度最短的路径所经过的边构成了一个子图,求该子图的价值和(i< j)

注意:

定义子图的价值和,为该子图所有边的价值的和

如果对于点对(i,j),没有任何一条路径可以使他们相互到达,则该点对的答案为0

输入格式

第一行两个正整数n,m表示无向图的点数,边数

此后m行,每行4个正整数,表示一条边的两端点,长度len,价值value

输出格式

一行\frac{n\times(n-1)}{2}个数依次表示点对(1,2),(1,3)...(1,n)(2,3),(2,4)...(2,n),...,(n-1,n)的答案

样例输入

5 7
1 5 1 1
1 4 2 1
5 4 1 1
5 2 2 1
4 2 1 1
3 4 3 1
2 1 3 1

样例输出

6 4 3 1 2 1 3 1 2 1

样例解释

Xnip2020-10-10_10-50-08.jpg

(1,2)的最短路径有:

1->2

1->5->2

1->4->2

1->5->4->2

构成子图的边有:(1,2),(1,5),(1,4),(5,2),(4,2),(5,4),价值和为6

(1,3)的最短路径有:

1->4->3

1->5->4->3

构成子图的边有:(1,4),(1,5),(5,4),(4,3),价值和为4

数据范围与约定

对于20\%的数据,保证2\leq n\leq 50

对于另外10\%的数据,保证是一棵树

对于另外10\%的数据,保证0\leq m\leq 10^3

对于100\%的数据,保证2\leq n\leq 3000\leq m\leq \frac{n\times(n-1)}{2}1\leq len,value\leq 10^6

保证没有重边和自环

Input

Output

Examples

Input

5 7
1 5 1 1
1 4 2 1
5 4 1 1
5 2 2 1
4 2 1 1
3 4 3 1
2 1 3 1

Output

6 4 3 1 2 1 3 1 2 1