from collections import defaultdict
import heapq as hq
def solution(N, road, K):
dic = defaultdict(set)
gp = [float("inf")] * (N + 1)
for s, e, w in road:
dic[s].add((e, w))
dic[e].add((s, w))
que = []
hq.heappush(que, (0, 1))
gp[1] = 0
while que:
cur_dis, node = hq.heappop(que)
for e, w in dic[node]:
if gp[e] > cur_dis + w:
gp[e] = cur_dis + w
hq.heappush(que, (gp[e], e))
return len(list(filter(lambda x: x <= K, gp)))