結果
問題 |
No.483 マッチ並べ
|
ユーザー |
![]() |
提出日時 | 2017-04-13 17:13:10 |
言語 | Ruby (3.4.1) |
結果 |
AC
|
実行時間 | 820 ms / 2,000 ms |
コード長 | 1,163 bytes |
コンパイル時間 | 62 ms |
コンパイル使用メモリ | 7,552 KB |
実行使用メモリ | 12,416 KB |
最終ジャッジ日時 | 2024-07-18 12:56:19 |
合計ジャッジ時間 | 7,621 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 53 |
コンパイルメッセージ
Syntax OK
ソースコード
N=gets.to_i h={} m=N.times.map{ a=gets.split.map(&:to_i) a<<(b=a[0]*1000+a[1]) a<<(c=a[2]*1000+a[3]) (h[b]=(h[b]||[]))<<a (h[c]=(h[c]||[]))<<a a } F=->m,h,a,r,o,u{ return true if o[a] u[a]=true o[a]=true b=h[a[4]] c=h[a[5]] if b.size==1 if c.size==1 return true else z=true c.each{|d| z&&=F[m,h,d,r,o,u] } o[a]=false return z end elsif c.size==1 z=true b.each{|d| z&&=F[m,h,d,r,o,u] } o[a]=false return z else unless r[a[0]][a[1]] r[a[0]][a[1]]=true z=true c.each{|d| z&&=F[m,h,d,r,o,u] } b.each{|d| z&&=F[m,h,d,r,o,u] } r[a[0]][a[1]]=false if z o[a]=false return true end end unless r[a[2]][a[3]] r[a[2]][a[3]]=true z=true c.each{|d| z&&=F[m,h,d,r,o,u] } b.each{|d| z&&=F[m,h,d,r,o,u] } r[a[2]][a[3]]=false o[a]=false return z end end o[a]=false false } u={} m.each{|a| next if u[a] r=112.times.map{[]} unless F[m,h,a,r,{},u] puts "NO" exit end } puts "YES"