N = gets.to_i M = gets.to_i E = Hash.new { |h, k| h[k] = {} } visited_counter = Array.new(N + 1, 0) M.times do u, c, v = gets.split.map(&:to_i) visited_counter[u] += 1 E[v][u] = c end need_ing = Array.new(N + 1, 0) need_ing[N] = 1 queue = [] queue << N until queue.empty? u = queue.shift visited_counter[u] -= 1 next if visited_counter[u] > 0 E[u].each do |v, cnt| need_ing[v] += cnt * need_ing[u] queue << v end end 1.upto(N - 1) do |v| if E[v].size == 0 puts need_ing[v] else puts 0 end end