AT_wupc2012_5.会場への道

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

题目背景

终于到了比赛的前一天了。为了比赛当天而早做准备,我将找好去比赛会场的路。从我住的小镇到比赛会场所在的镇(早稻田),会经过一些其它的小镇。小镇之间有一些道路连接。如果两个小镇间没有道路连接则不能在这两个小镇间移动。

无论如何我也想在比赛中取得胜利,所以我想保证一定能取胜。我相信能被 44 或 77 整除的数是能够给我带来好运的数。假设出发时的时间为 00 ,而到达会场的时间能够被 44 或 77 整除的话我的心情就会很好。然而,如果到达会场的时间不能被 44 或 77 整除,我就会觉得这次比赛肯定会输。为了在比赛中取得胜利,即使绕很远的路我也要在能被 44 或 77 整除的时间点到达会场。

去会场的移动方法很自由。曾经过的道路再次经过,回到已经去过的小镇或出发的小镇,都是允许的。但是,在一条道路的途中不能折返,在已经到达会场后不能再继续移动。

现在,请求出按满足以上条件的方式移动时,到达会场所用的最短时间。

给出连接 NN 个小镇的 MM 条道路的情况。每条道路连接不同的两个小镇。在指定时间内可以经由此路双方向移动。我所在的小镇的编号为 00 ,会场所在镇的编号为 N−1N-1 (小镇的编号分别从 00 到 N−1N-1 ),另外出发时的时间为 00 。请编写程序求出:按照到达会场所在小镇的时间能被 44 或 77 整除的方式移动时,最小的到达时间。不过,已经到达过会场便不能再移动。另外,在一条道路的途中不能折返或休息。

输入格式

输入按以下形式:

N MN \space M

f1 t1 c1f_1 \space t_1 \space c_1

......

fm tm cmf_m \space t_m \space c_m

  • 第一行为以空格隔开的两个整数 N(2≤N≤1000)N(2 \le N \le 1000) 和 M(1≤M≤min(10000,N×(N−1)/2))M(1 \le M \le min(10000,N×(N-1)/2)) ,分别表示表示小镇数与道路数。
  • 第二行到第 M+1M+1 行为各条道路的情况,也就是:该道路所连接的两个小镇的编号 fif_i 和 tit_i ,和从该道路一端移动到另一端所花时间 cic_i 。
  • 对于任意 ii ,满足 0≤fi≤N−10 \leq f_i \leq N-1 且 $ 0 \leq t_i \leq N-1 , f_i ≠ t_i , 1 \leq c_i \leq 100000 $ 。
  • 数据保证不会有重边和自环。可能会出现没有任何道路连接的小镇。

输出格式

输出一行:按满足条件的方法移动到会场所花的最小时间。
数据保证一定有解。

部分分

对于 30%30\% 的数据:在以上条件的基础上,保证能够在 500500 单位时间内到达会场。

输入输出样例

输入样例1

2 1
0 1 4

输出样例1

4

样例解释1

  • 从出发的小镇到目标小镇需要的时间为 44 。合计时间 44 为 44 的倍数,因此满足条件。故答案为 44 。

输入样例2

3 2
0 1 15
1 2 5

输出样例2

20

样例解释2

  • 从出发的小镇 00 开始,花费 1515 单位时间到达小镇 11 ,从小镇 11 花费 55 单位时间移动到目标小镇 22 。合计时间 2020 是 44 的倍数。故满足条件,答案为 2020 。

输入样例3

4 3
0 1 1
1 2 1
2 3 1

输出样例3

7

样例解释3

  • 从出发的小镇 00 花费 11 单位时间到达小镇 11 ,从小镇 11 花费 11 单位时间到达小镇 22 ,从小镇 22 花费 11 单位时间到达目标小镇 33 。到达的时间为 33 ,而 33 既不是 44 的倍数也不是 77 的倍数。故我们可以在小镇 11 和小镇 22 间反复移动,最后的总时间为 77 。 77 是 77 的倍数。故满足条件,答案为 77 。

输入解题思路,AI测评打分。不知道怎么写?

首页