最短路径
题号:NC14697
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

现在给出一幅有向图(有重边,无自环),问你多少组点对满足他们之间的最短路=d,输出点对的个数。

输入描述:

第1行输入三个整数n,m,d,表示图的点数,边数和查询的值。
第2-m+1行,每行输入三个整数s,t,v,表示边的起点,终点和边权。
数据保证:0<n≤50,0<m≤5000,0<d≤5000,0<s,t≤n,0<v≤100。

输出描述:

输出一行,一个整数表示满足条件的点对个数。
示例1

输入

复制
2 2 1
1 2 1
2 1 2

输出

复制
1

说明

只有1到2的最短路是1,所以只有1个。
示例2

输入

复制
2 2 1
1 2 1
2 1 1

输出

复制
2

说明

1到2和2到1的最短路都是1,所以有2个。

备注:

(s,t)和(t,s)是两组不同的点对。