結果
問題 | No.274 The Wall |
ユーザー |
![]() |
提出日時 | 2021-01-30 17:02:19 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 254 ms / 2,000 ms |
コード長 | 1,767 bytes |
コンパイル時間 | 596 ms |
コンパイル使用メモリ | 82,048 KB |
実行使用メモリ | 78,976 KB |
最終ジャッジ日時 | 2024-06-28 04:49:33 |
合計ジャッジ時間 | 3,992 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 22 |
ソースコード
import sysread=sys.stdin.readlinesys.setrecursionlimit(10**9)def SCC(G,N):rG=[[] for _ in range(N)]P=[]seen=[0]*Nfor v in range(N):for nv in G[v]:rG[nv].append(v)def dfs(G,v):seen[v]=1for nv in G[v]:if not seen[nv]:dfs(G,nv)P.append(v)def rdfs(G,v,C):seen[v]=1group[v]=Cfor nv in G[v]:if not seen[nv]:rdfs(G,nv,C)for v in range(N):if not seen[v]:dfs(G,v)seen=[0]*Ngroup=[-1]*NC=0for v in P[::-1]:if not seen[v]:rdfs(rG,v,C)C+=1Size=max(group)+1return group,Sizedef intersect(l1,r1,l2,r2):if r1<l2 or r2<l1:return Falsereturn Truen,m=map(int,read().split())blocks=[tuple(map(int,input().split())) for _ in range(n)]G=[[] for _ in range(2*n)]for i in range(n):for j in range(i):c=0l1,r1=blocks[i]l2,r2=blocks[j]if intersect(l1,r1,l2,r2):G[i].append(j+n)G[j].append(i+n)c+=1l2,r2=m-r2-1,m-l2-1if intersect(l1,r1,l2,r2):G[i].append(j)G[j+n].append(i+n)c+=1l1,r1=m-r1-1,m-l1-1if intersect(l1,r1,l2,r2):G[i+n].append(j)G[j+n].append(i)c+=1l2,r2=m-r2-1,m-l2-1if intersect(l1,r1,l2,r2):G[i+n].append(j+n)G[j].append(i)c+=1if c==4:print('NO')exit()group,_=SCC(G,2*n)for i in range(n):if group[i]==group[i+n]:print('NO')exit()print('YES')