第三周-周测-Rhizomys

                                 Rhizomys


描述

竹鼠养殖场有若干个小房间,有很多条双向道路连接着它们。

值得注意的是,在养殖场中,连接两个房间的道路可能不止一条。由于路上能看到的风景不同,我们认为这两条路是不同的。

同时,也可能存在一条道路是从一个房间出发又回到它自身,但我们规定,从一个房间到它自己的最短距离为0。

为了不被吃掉,竹鼠们决定开始运动,运动的方式是从一个小房间经过若干个小房间(中间经过的房间数可以为0)走到另一个小房间。

但竹鼠们也希望在锻炼过程中尽可能地偷懒,这意味着,竹鼠运动的路线总是沿最短路的。

现在,竹鼠们希望知道从1号房间分别到其他所有房间的运动路线的种数。由于它们害怕会因为写代码而被吃掉,所以它们找到了你帮忙。

输入

第一行是两个整数 N,M

,表示房间个数和连接房间的道路的条数。

接下来m

行,每行三个整数 u,v,c,表示 u 号房间与v 号房间之间存在一条长度为c

的双向道路。

输出

输出 N

行,第 i 行表示从 1 号房间到 i 号房间的运动路径的种数,由于答案可能会很大,你只需要输出它模911814

的结果。

当不存在任何一条从 1

号房间到i号房间的道路时,请输出 0

输入样例1

6 12
2 1 2
4 2 2
1 6 2
5 6 1
3 6 1
5 6 2
6 4 2
1 5 2
5 2 1
2 1 2
4 4 2
6 5 2

输出样例1

1
2
1
3
1
1

样例1解释

以下用 Ei

表示输入中的第 i

条边。

到1的最短路长度为0,只有1条。

到2的最短路长度为2,有2条( E1

, E10

)。

到3的最短路长度为3,只有1条( E3

-> E5

)。

到4的最短路长度为4,有3条( E3

-> E7 , E1 -> E2 , E10 -> E2

)。

到5的最短路长度为1,只有1条( E9

)。

到6的最短路长度为2,只有1条( E3

)。

输入样例2

点此下载。

限制

对于20%的数据,1≤n≤100,1≤m≤2000

对于50%的数据,1≤n≤1000,1≤m≤150000

对于100%的数据,1≤n≤20000,1≤m≤500000,1≤u,v≤n,1≤c≤10

提示

[这道题统计最短路的数目,我们不妨考虑将所有处在最短路上的边提出来]

[提出这些边后形成了原图的一张子图,显然这张子图是不会有环的,否则与最短路的定义矛盾]

[既然没有环,那我们就可以愉快地做动态规划啦~]

[请同学们思考,如果使用dijkstra算法,需要先求最短路,再拓扑排序吗?]

为了帮助大家完成题目,我们提供了只包含了输入输出功能的程序模板,也提供了含有算法的大部分实现细节的程序。

你可以根据自己的实际情况,在这些程序的基础上进行作答,或不参考这些程序,这将与你的得分无关。

这些程序可以从【这里】下载。

特别提醒:对于 Java 语言,在提交时请删除程序中的所有中文字符,否则可能无法通过编译。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值