結果
| 問題 |
No.483 マッチ並べ
|
| コンテスト | |
| ユーザー |
smz_8110
|
| 提出日時 | 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"
smz_8110