結果
問題 |
No.3056 Disconnected Coloring
|
ユーザー |
|
提出日時 | 2025-03-14 21:53:58 |
言語 | Ruby (3.4.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,030 bytes |
コンパイル時間 | 457 ms |
コンパイル使用メモリ | 8,192 KB |
実行使用メモリ | 68,224 KB |
最終ジャッジ日時 | 2025-03-14 21:54:33 |
合計ジャッジ時間 | 26,535 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 26 WA * 8 |
コンパイルメッセージ
Main.rb:4: warning: ambiguous first argument; put parentheses or a space even after `-` operator Main.rb:30: warning: ambiguous first argument; put parentheses or a space even after `-` operator Main.rb:72: warning: ambiguous first argument; put parentheses or a space even after `-` operator Syntax OK
ソースコード
N, M = gets.split.map(&:to_i) if M.odd? puts -1 exit end edges = Array.new(M) { gets.split.map { _1.to_i - 1 } } graph = Array.new(N) { [] } M.times do |i| u, v = edges[i] graph[u] << [v, i] graph[v] << [u, i] end dist = [10**9] * N dist[0] = 0 queue = [0] while (u = queue.shift) next if u == N - 1 graph[u].each do |v, _| next if dist[v] <= dist[u] + 1 dist[v] = dist[u] + 1 queue << v end end if dist[N - 1] <= 1 puts -1 exit end dist_rev = [10**9] * N dist_rev[N - 1] = 0 queue = [N - 1] while (u = queue.shift) next if u == 0 graph[u].each do |v, _| next if dist_rev[v] = dist_rev[u] + 1 queue << v end end red = 0 blue = 0 coloring = [nil] * M graph[0].each do |v, e| next if dist_rev[v] >= N coloring[e] = ?B blue += 1 end graph[N - 1].each do |v, e| next if dist[v] >= N coloring[e] = ?R red += 1 end M.times do |e| next if coloring[e] if red < blue coloring[e] = ?R red += 1 else coloring[e] = ?B blue += 1 end end if red != blue puts -1 exit end puts coloring.join