結果

問題 No.1420 国勢調査 (Easy)
ユーザー simansiman
提出日時 2021-12-11 15:28:20
言語 Ruby
(3.3.0)
結果
AC  
実行時間 1,057 ms / 2,000 ms
コード長 708 bytes
コンパイル時間 346 ms
コンパイル使用メモリ 7,424 KB
実行使用メモリ 45,696 KB
最終ジャッジ日時 2024-07-19 20:32:22
合計ジャッジ時間 21,425 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 89 ms
12,032 KB
testcase_01 AC 89 ms
12,032 KB
testcase_02 AC 579 ms
35,968 KB
testcase_03 AC 587 ms
35,840 KB
testcase_04 AC 593 ms
36,096 KB
testcase_05 AC 581 ms
36,224 KB
testcase_06 AC 588 ms
35,968 KB
testcase_07 AC 520 ms
33,024 KB
testcase_08 AC 544 ms
34,816 KB
testcase_09 AC 508 ms
30,848 KB
testcase_10 AC 492 ms
29,696 KB
testcase_11 AC 536 ms
33,280 KB
testcase_12 AC 121 ms
14,848 KB
testcase_13 AC 343 ms
29,184 KB
testcase_14 AC 136 ms
15,872 KB
testcase_15 AC 353 ms
28,928 KB
testcase_16 AC 349 ms
29,440 KB
testcase_17 AC 352 ms
28,800 KB
testcase_18 AC 354 ms
29,056 KB
testcase_19 AC 352 ms
28,928 KB
testcase_20 AC 353 ms
28,672 KB
testcase_21 AC 349 ms
30,080 KB
testcase_22 AC 1,057 ms
45,440 KB
testcase_23 AC 1,017 ms
44,928 KB
testcase_24 AC 1,014 ms
45,056 KB
testcase_25 AC 1,006 ms
45,568 KB
testcase_26 AC 1,014 ms
45,696 KB
testcase_27 AC 368 ms
30,720 KB
testcase_28 AC 693 ms
41,472 KB
testcase_29 AC 229 ms
24,960 KB
testcase_30 AC 506 ms
37,632 KB
testcase_31 AC 487 ms
36,608 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
Main.rb:13: warning: ambiguous first argument; put parentheses or a space even after `-' operator
Main.rb:41: warning: ambiguous first argument; put parentheses or a space even after `-' operator
Syntax OK

ソースコード

diff #

N, M = gets.split.map(&:to_i)
E = Hash.new { |h, k| h[k] = [] }
C = Hash.new { |h, k| h[k] = Hash.new }

M.times do
  a, b = gets.split.map(&:to_i)
  y = gets.to_i

  E[a] << b
  E[b] << a

  if C[a][b] && C[a][b] != y
    puts -1
    exit
  end

  C[a][b] = C[b][a] = y
end

ans = Array.new(N + 1, -1)
visited = Array.new(N + 1, false)

1.upto(N) do |i|
  next if visited[i]

  queue = []
  queue << [i, 0]

  until queue.empty?
    u, x = queue.shift

    next if visited[u]
    visited[u] = true
    ans[u] = x

    E[u].each do |v|
      c = C[u][v]
      nc = c ^ x

      if ans[v] != -1 && ans[v] != nc
        puts -1
        exit
      end

      queue << [v, nc]
    end
  end
end

puts ans[1..-1]
0