CF1528D.It's a bird! No, it's a plane! No, it's AaParsa!

省选/NOI-

通过率:0%

时间限制:5.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

There are nn cities in Shaazzzland, numbered from 00 to n−1n-1. Ghaazzzland, the immortal enemy of Shaazzzland, is ruled by AaParsa.

As the head of the Ghaazzzland's intelligence agency, AaParsa is carrying out the most important spying mission in Ghaazzzland's history on Shaazzzland.

AaParsa has planted mm transport cannons in the cities of Shaazzzland. The ii-th cannon is planted in the city aia_i and is initially pointing at city bib_i.

It is guaranteed that each of the nn cities has at least one transport cannon planted inside it, and that no two cannons from the same city are initially pointing at the same city (that is, all pairs (ai,bi)(a_i, b_i) are distinct).

AaParsa used very advanced technology to build the cannons, the cannons rotate every second. In other words, if the ii-th cannon is pointing towards the city xx at some second, it will target the city (x+1)mod  n(x + 1) \mod n at the next second.

As their name suggests, transport cannons are for transportation, specifically for human transport. If you use the ii-th cannon to launch yourself towards the city that it's currently pointing at, you'll be airborne for cic_i seconds before reaching your target destination.

If you still don't get it, using the ii-th cannon at the ss-th second (using which is only possible if you are currently in the city aia_i) will shoot you to the city (bi+s)mod  n(b_i + s) \mod n and you'll land in there after cic_i seconds (so you'll be there in the (s+ci)(s + c_i)-th second). Also note the cannon that you initially launched from will rotate every second but you obviously won't change direction while you are airborne.

AaParsa wants to use the cannons for travelling between Shaazzzland's cities in his grand plan, and he can start travelling at second 00. For him to fully utilize them, he needs to know the minimum number of seconds required to reach city uu from city vv using the cannons for every pair of cities (u,v)(u, v).

Note that AaParsa can stay in a city for as long as he wants.

沙阿兹兰德(Shaazzzland)共有 nn 座城市,编号从 00 到 n−1n-1。沙阿兹兰德的不朽宿敌——加阿兹兰德(Ghaazzzland)由阿帕尔萨(AaParsa)统治。

作为加阿兹兰德情报机构的负责人,阿帕尔萨正在沙阿兹兰德执行加阿兹兰德历史上最重要的一次间谍任务。

阿帕尔萨已在沙阿兹兰德的各城市中部署了 mm 门运输火炮。第 ii 门火炮部署在城市 aia_i,初始指向城市 bib_i。

保证:nn 座城市中每一座至少部署有一门运输火炮;且来自同一城市的任意两门火炮初始指向的城市互不相同(即所有二元组 (ai,bi)(a_i, b_i) 均互异)。

阿帕尔萨采用极为先进的技术建造了这些火炮,它们每秒旋转一次。换言之,若第 ii 门火炮在某一时刻指向城市 xx,则下一时刻它将指向城市 (x+1)mod  n(x + 1) \mod n。

顾名思义,运输火炮专用于人员运输。若你使用第 ii 门火炮向其当前所指城市发射自身,则将在空中飞行 cic_i 秒后抵达目标城市。

若你仍不理解,具体而言:在第 ss 秒使用第 ii 门火炮(仅当此时你恰好位于城市 aia_i 时才可使用),将把你发射至城市 (bi+s)mod  n(b_i + s) \mod n,并在 cic_i 秒后抵达该城市(即你将于第 (s+ci)(s + c_i) 秒到达)。还需注意:你出发所用的那门火炮仍会每秒持续旋转,但你在空中飞行期间其方向自然不会改变。

阿帕尔萨计划在其宏大战略中利用这些火炮在沙阿兹兰德各城市之间穿梭旅行,且他可于第 00 秒起始旅行。为充分运用这些火炮,他需要知道对每一对城市 (u,v)(u, v),从城市 vv 出发、借助火炮抵达城市 uu 所需的最少秒数。

注意:阿帕尔萨可在任一城市中停留任意长时间。

输入格式

The first line contains two integers nn and mm (2≤n≤600,n≤m≤n2)(2 \le n \le 600 , n \le m \le n^2) — the number of cities and cannons correspondingly.

The ii-th line of the following mm lines contains three integers aia_i, bib_i and cic_i (0≤ai,bi≤n−1,1≤ci≤109)( 0 \le a_i , b_i \le n-1 , 1 \le c_i \le 10^9), denoting the cannon in the city aia_i, which is initially pointing to bib_i and travelling by which takes cic_i seconds.

It is guaranteed that each of the nn cities has at least one transport cannon planted inside it, and that no two cannons from the same city are initially pointing at the same city (that is, all pairs (ai,bi)(a_i, b_i) are distinct).

第一行包含两个整数 nn 和 mm(2≤n≤6002 \le n \le 600,n≤m≤n2n \le m \le n^2),分别表示城市数量和运输炮数量。

接下来的 mm 行中,第 ii 行包含三个整数 aia_i、bib_i 和 cic_i(0≤ai,bi≤n−10 \le a_i , b_i \le n-1,1≤ci≤1091 \le c_i \le 10^9),表示位于城市 aia_i 的一门运输炮,其初始指向城市 bib_i,从 aia_i 到 bib_i 的运输耗时为 cic_i 秒。

保证每个城市 nn 中至少安装有一门运输炮,且同一城市内的任意两门运输炮初始指向的城市均不相同(即所有数对 (ai,bi)(a_i, b_i) 互不相同)。

输出格式

Print nn lines, each line should contain nn integers.

The jj-th integer in the ii-th line should be equal to the minimum time required to reach city jj from city ii.

输出 nn 行,每行包含 nn 个整数。

第 ii 行的第 jj 个整数应等于从城市 ii 到城市 jj 所需的最短时间。

输入输出样例

  • 输入#1

    3 4
    0 1 1
    0 2 3
    1 0 1
    2 0 1

    输出#1

    0 1 2 
    1 0 2 
    1 2 0
  • 输入#2

    6 6
    0 0 1
    1 1 1
    2 2 1
    3 3 1
    4 4 1
    5 5 1

    输出#2

    0 2 3 3 4 4 
    4 0 2 3 3 4 
    4 4 0 2 3 3 
    3 4 4 0 2 3 
    3 3 4 4 0 2 
    2 3 3 4 4 0
  • 输入#3

    4 5
    0 1 1
    1 3 2
    2 2 10
    3 0 1
    0 0 2

    输出#3

    0 1 2 3 
    3 0 3 2 
    12 13 0 11 
    1 2 2 0

说明/提示

In the first example one possible path for going from 00 to 22 would be:

  1. Stay inside 00 and do nothing for 11 second.
  2. Use the first cannon and land at 22 after 11 second.

Note that: we could have used the second cannon in 00-th second but it would have taken us 33 seconds to reach city 22 in that case.

在第一个例子中,一条从 00 到 22 的可行路径为:

  1. 在城市 00 内停留并保持不动 11 秒。
  2. 使用第一门大炮,并在 11 秒后抵达城市 22。

注意:我们本可以在第 00 秒时使用第二门大炮,但那样将需要 33 秒才能到达城市 22。

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

首页