U112364 流言的传播
题目描述
昨天下午,$\text{Matrix67}$ 陪 $MM$ 出去逛街,走累了后去咖啡店歇了歇脚;再后来 $MM$ 陪 $\text{Matrix67}$ 去了一趟书店,之后两人去电影院看了一场电影。从电影院出来后已经很晚了,考虑到 $MM$的安全问题,$\text{Matrix67}$ 先送 $MM$ 回到宿舍,然后自己才回去。第二天 $\text{Matrix67}$ 起床后发现问题严重了:昨天和 $MM$ 出去玩本来什么都没发生,但现在一些不堪入耳的流言正疯狂传播,很多细节都说得有鼻子有眼的。在澄清事实并抓出元凶的同时,$\text{Matrix67}$ 希望切断一些流言传播的路径,尽可能减缓流言传播的速度。
除去 $\text{Matrix67}$ 和他的 $MM$,学校里还有 $N$ 个人。这 $N$ 个人形成了 $M$对双向的朋友关系,这些朋友关系连通了所有 $N$ 个人。不同的朋友间传递消息的速度各不相同。如果 $A$和 $B$ 是第 $i$ 对朋友,那么当其中一个人听到流言后,他会在Ti的时间内传给另一个人。现在,$\text{Matrix67}$ 只知道流言并没有传遍整个学校,但他不知道哪些人已经听说了这个流言。他希望 **切断尽可能少的朋友关系,使得无论是哪些人已经获知了流言,流言都无法以原来的速度传给一个新的人(即新的得知此流言的人的出现将变得更晚)**。换句话说,$\text{Matrix67}$ 希望找到一个最小的边集$E$,使得对任意一个不等于全集的点集 $S$,恰好只有一个顶点在 $S$ 里的边中权值最小的那一条在边集 $E$ 中。
输入格式
第一行输入两个用空格隔开的正整数 $N$ 和 $M$ ,分别表示学校的人数和朋友关系数。
以下 $M$ 行每行有三个用空格隔开的正整数,其中第i行的三个正整数为 $A_i, B_i, T_i$,表示 $A_i$ 和 $B_i$ 是第 $i$ 对朋友,它们之间传递消息需要 $T_i$ 的时间。输入数据保证 $0
输出格式
你需要输出你所得到的最小值和具体的方案。
输出文件的第一行是一个正整数,代表你的最优方案中需要切断的朋友关系数。
以下若干行每行一个正整数,表示你的方案里需要切断的朋友关系在输入数据中的编号(即你需要切断的是输入数据中给的第几条边)。这些数必须按照增序排列输出。
如果有多种最优方案,你只需要输出其中一种即可。我们的评测系统会自动判断你的输出数据的正确性。
说明/提示
对于 $30 \%$ 的数据,$N \leq 10 , M \leq 20$.
对于 $70 \%$ 的数据,$N \leq 100 , M \leq 10^3$.
对于 $100 \%$ 的数据,$N \leq 10^4 , M \leq 10^5$.