基本思想是在dijkstra求最短距离时记录边,然后按顺序输出这些边,数量不超过k
n, m, k = map(int, input().split())
e = [[] for _ in range(n + 1)]
for i in range(1, m + 1):
x, y, z = map(int, input().split())
e[x].append((y, z, i))
e[y].append((x, z, i))
ans = []
def dijkstra():
dis = [-1] * (n + 1)
from queue import PriorityQueue
q = PriorityQueue()
q.put((0, 1, 0))
while q.qsize() > 0:
top = q.get()
if dis[top[1]] >= 0:
continue
dis[top[1]] = top[0]
ans.append(top[2])
for item in e[top[1]]:
q.put((top[0] + item[1], item[0], item[2]))
dijkstra()
l = min(k + 1, len(ans))
print(l - 1)
print(*ans[1: l])