結果
問題 | No.421 しろくろチョコレート |
ユーザー |
![]() |
提出日時 | 2016-09-21 00:03:05 |
言語 | Ruby (3.4.1) |
結果 |
AC
|
実行時間 | 518 ms / 2,000 ms |
コード長 | 1,299 bytes |
コンパイル時間 | 326 ms |
コンパイル使用メモリ | 7,424 KB |
実行使用メモリ | 16,512 KB |
最終ジャッジ日時 | 2024-09-23 07:09:30 |
合計ジャッジ時間 | 9,822 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 65 |
コンパイルメッセージ
Syntax OK
ソースコード
# Here your code !V = []G = Hash.new {|h,k| h[k] = [] }def add_virt(color)v = V.sizeV << colorvenddef add_edge(u,v)G[u] << vG[v] << uenddef dfs(u, matches, used = Array.new(V.size))used[u] = trueG[u].find do |v|w = matches[v]if !w || (!used[w] && dfs(w, matches, used))matches[u] = vmatches[v] = utrueendendenddef matchingmatches = Array.new(V.size)V.size.times.inject(0) do |s, v|s += 1 if !matches[v] && dfs(v, matches)sendendn, m = gets.split.map(&:to_i)map = n.times.map dogets.chompendvmap = Array.new(n) { Array.new(m,nil) }n.times do |y|m.times do |x|if map[y][x] == 'w'vmap[y][x] = add_virt(:w)elsif map[y][x] == 'b'vmap[y][x] = add_virt(:b)endendendn.times do |y|m.times.each_cons(2) do |a,b|if vmap[y][a] && vmap[y][b]add_edge(vmap[y][a], vmap[y][b])endendendm.times do |x|n.times.each_cons(2) do |a,b|if vmap[a][x] && vmap[b][x]add_edge(vmap[a][x], vmap[b][x])endendenda,b = [:w,:b].map{|color| V.count(color) }.sortc = matchingputs c * 100 + (a - c) * 10 + (b - a)