问题 6400 --重塑时光之忆

6400: 重塑时光之忆

时间限制: 4 Sec  内存限制: 512 MB
提交: 10  解决: 5
[提交][状态][命题人:]

题目描述

点燃蜡烛,摊开纸牌,嗅闻芬芳——
那些残破的回忆,化作摇荡光影中的面容。
从火中钻出的幽灵,向她诉说着令人留恋的过去。
剪切时光,凝固片刻,她将最为珍贵的瞬间化为一个个水晶般的永恒。
「失去的太多,留下的太少…我们培育记忆,以对抗残酷的时间。」

黑天鹅徜徉在记忆世界中。
记忆世界由 n 个忆泡和 m 个隧道构成。第 i 条隧道连接第 u[i] 个忆泡和第 v[i] 个忆泡,距离是 w[i] 。

与现实世界不同,记忆世界中若想从第 x 个忆泡移动至第 y 个忆泡,不能直接移动,需要先寻找一个忆泡 z 作为跳板,满足第 x 个忆泡和第 z 个忆泡间存在隧道,设该距离为 w(x,z) ,且第 z 个忆泡和第 y 个忆泡间存在隧道,设该距离为 w(z,y) 。然后沿着路径 x->z->y 移动,耗时 (w(x,z)+w(z,y))^2 。(其中 ^ 表示指数符号)

求从第 1 个忆泡出发,到达任意忆泡所需的最小耗时。

输入

第一行包含两个整数 n,m (2≤n≤10^5, 1≤m≤min(n(n-1)/2, 2·10^5)) ,表示忆泡数和隧道数。
接下来 m 行,每行包含三个整数 u[i],v[i],w[i] (1≤u[i],v[i]≤n,u[i]≠v[i] , 1≤w[i]≤50),表示第 i 条隧道连接第 u[i] 个忆泡和第 v[i] 个忆泡,距离是 w[i] 。
数据保证没有重边。

输出

一行包含 n 个整数,第 i 个整数表示第 1 个忆泡到第 i 个忆泡的最小耗时。若无法到达,则输出 -1 。
样例输入
Copy
样例1:
5 6
1 2 3
2 3 4
3 4 5
4 5 6
1 5 1
2 4 2

样例2:
3 2
1 2 1
2 3 2
样例输出
Copy
样例1:
0 98 49 25 114

样例2:
0 -1 9

提示

来源

[提交][状态]