結果
| 問題 |
No.483 マッチ並べ
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-02-11 13:17:11 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 34 ms / 2,000 ms |
| コード長 | 1,745 bytes |
| コンパイル時間 | 147 ms |
| コンパイル使用メモリ | 13,056 KB |
| 実行使用メモリ | 11,008 KB |
| 最終ジャッジ日時 | 2024-12-29 12:13:44 |
| 合計ジャッジ時間 | 3,261 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 53 |
ソースコード
import sys
from collections import deque
def debug(x, table):
for name, val in table.items():
if x is val:
print('DEBUG:{} -> {}'.format(name, val), file=sys.stderr)
return None
def paint_col(Adj, cols_v, cols_e, i, col):
cols_v[i] = col
nxts = deque([i])
while nxts:
u = nxts.popleft()
for v in Adj[u]:
if cols_e[min(u, v), max(u, v)] == 0:
cols_e[min(u, v), max(u, v)] = col
if cols_v[v] == 0:
cols_v[v] = col
nxts.append(v)
return None
def solve():
N = int(input())
p2n = {}
node = 0
Adj = []
cols_v = []
cols_e = {}
for i in range(N):
r0, c0, r1, c1 = map(int, input().split())
if (r0, c0) not in p2n:
p2n[r0, c0] = node
cols_v.append(0)
node += 1
Adj.append([])
if (r1, c1) not in p2n:
p2n[r1, c1] = node
cols_v.append(0)
node += 1
Adj.append([])
u, v = p2n[r0, c0], p2n[r1, c1]
Adj[u].append(v)
Adj[v].append(u)
cols_e[min(u, v), max(u, v)] = 0
# debug(cols_v, locals())
# debug(cols_e, locals())
# debug(Adj, locals())
col = 1
for i in range(len(cols_v)):
if cols_v[i] == 0:
paint_col(Adj, cols_v, cols_e, i, col)
col += 1
# debug(cols_v, locals())
# debug(cols_e, locals())
for c in range(1, col):
num_v = sum(i == c for i in cols_v)
num_e = sum(i == c for i in cols_e.values())
if num_v + 1 <= num_e:
print('NO')
break
else:
print('YES')
if __name__ == '__main__':
solve()