Description

有n个岛屿,m座桥,每座桥连通两座岛屿,桥上会有一些敌人,玩家只有消灭了桥上的敌人才能通过,与此同时桥上的敌人会对玩家造成一定伤害。而且会有一个大Boss镇守一座桥,以玩家目前的能力,是不可能通过的。而Boss是邪恶的,Boss会镇守某一座使得玩家受到最多的伤害才能从岛屿1到达岛屿n(当然玩家会选择伤害最小的路径)。问,Boss可能镇守桥有哪些。

Input

第一行两个整数n,m
接下来m行,每行三个整数s,t,c,表示一座连接岛屿s和t的桥上的敌人会对玩家造成c的伤害。

Output

一行,两个整数d,cnt,d表示有Boss的情况下,玩家要受到的伤害,cnt表示Boss有可能镇守的桥的数目。

Sample Input

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

Sample Output

3 1

HINT

100%的数据,1<=n<=100000,1<=m<=200000,1<=c<=10000,数据保证玩家可以从岛屿1到达岛屿n

Source

首先我们删除的边一定是在1~n的最短路路径上的一条边 那么假设是x->y并且x是y的父节点  那么我们需要满足 新边A->B 那么可以知道S->A->B->T  只要保证这三部分都不经过x->y即可

那么我们可以知道 A一定不在y的子树内 B一定在y的子树内 因为A所有地方都能走就是不能走到子树里 否则走的就不是最短路了 然后只要B在y的子树内就一定不会经过x->y这条边 因为因为B走到y再走到x再走到y会发现他重复走了 一段路 不如直接走y即可 所以B在y的子树内就可以了

然后找出1~n这条路的这条链 然后给这条链进行标号将深度从浅到深进行标号

然后给其他的点也都标号 标 该点与n节点lca的编号即可 然后考虑枚举每条非树边

每条非树边对应的编号就分别是这条链上的编号 也就是如果我必须经过这条边 那么中间这条链上dep[x]~dep[y]这些边都可以被砍掉 那么我就算一个我必须走这条边的代价 然后去线段树上区间取最小值即可

最后遍历整个线段树 找出最小值的最大即可

 


elijahqi

辣鸡蒟蒻一枚qwq 欢迎加qq qwq 2922945330

发表评论