SZTG-L-CF1076D. Edge Deletion

提交1 通过1
通过率100%
时间限制2500ms
内存限制256MiB

题目描述

题目描述

给定一张有 nn 个点和 mm 条边的无向图。将从点 11 至点 ii 的最短路长度记为 did_i。

你需要从图上删去一些边,使得图上最多剩余 kk 条边。我们称一个节点 ii 是一个好点当且仅当在所有删边操作完成后,仍存在一条从 11 至 ii 的路径使得其长度等于 did_i。

你的目标是构造一种如上的删除方案,使得剩余的好点最多。

输入格式

第一行包含三个整数 n,m,k n,m,k\ 表示图上的点数,边数和最多能剩余的边数。

接下来 mm 行,每行包含三个整数 x,y,w x,y,w\ ,表示一条从 xx 到 yy,权值为 ww 的边。

保证给定的图是联通的,无重边无自环的简单图。

输出格式

第一行输出一个整数 e (0≤e≤k)e\ (0 \le e \le k),表示需要保留的边数(你需要保证 0≤e≤k0\le e\le k)。

接下来一行输出 ee 个在 11 至 mm 之间的不同整数,表示保留边的编号(按输入顺序编号,从 11 开始,但可以以任意顺序输出)。

3 3 2
1 2 1
3 2 1
1 3 3
2
1 2 
4 5 2
4 1 8
2 4 1
2 1 3
3 4 9
3 1 5
2
3 2 
4 4 0
1 2 1
2 3 1
3 4 1
1 4 2
0

数据范围

$(2 \le n \le 3 \cdot 10^5,\ 1 \le m \le 3 \cdot 10^5,\ n - 1 \le m,\ 0 \le k \le m)$

(1≤x,y≤n, x≠y, 1≤w≤109)(1 \le x, y \le n,\ x \ne y,\ 1 \le w \le 10^9)