Задан неориентированный связный взвешенный граф, состоящий из $$$n$$$ вершин и $$$m$$$ ребер. Определим длину кратчайшего пути из вершины $$$1$$$ в вершину $$$i$$$ как $$$d_i$$$.
Требуется удалить несколько ребер графа так, чтобы осталось не более $$$k$$$ ребер. Назовем вершину $$$i$$$ хорошей, если после удаления ребер все еще существует путь из $$$1$$$ в $$$i$$$ длины $$$d_i$$$.
Ваша задача — удалить ребра таким образом, чтобы количество хороших вершин было максимально.
В первой строке записаны три целых числа $$$n$$$, $$$m$$$ and $$$k$$$ ($$$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$$$) — количество вершин и ребер в графе, а также максимальное количество ребер, которые могут остаться в графе, соответственно.
Затем следуют $$$m$$$ строк, в каждой содержатся по три целых числа $$$x$$$, $$$y$$$, $$$w$$$ ($$$1 \le x, y \le n$$$, $$$x \ne y$$$, $$$1 \le w \le 10^9$$$), задающие ребро между вершинами $$$x$$$ и $$$y$$$ веса $$$w$$$.
Данный граф связный (любая вершина достижима из любой другой) и простой (не существует петель, и для каждой неупорядоченной пары вершин существует не более одного ребра, соединяющего эти вершины).
В первой строке выведите $$$e$$$ — количество ребер, которые останутся в графе ($$$0 \le e \le k$$$).
Во второй строке выведите $$$e$$$ различных целых чисел от $$$1$$$ до $$$m$$$ — номера ребер, которые останутся в графе. Ребра пронумерованы в том же порядке, в котором задавались во входных данных. Количество хороших вершин должно быть максимально возможным.
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
Название |
---|