結果

問題 No.274 The Wall
ユーザー sasa8uyauya
提出日時 2024-09-05 10:42:00
言語 PyPy3
(7.3.15)
結果
MLE  
実行時間 -
コード長 2,351 bytes
コンパイル時間 361 ms
コンパイル使用メモリ 82,532 KB
実行使用メモリ 566,172 KB
最終ジャッジ日時 2024-09-05 10:42:12
合計ジャッジ時間 5,894 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 21 MLE * 1
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

class SCC():
def __init__(self,n):
self.n=n
self.e=[[] for i in range(self.n)]
self.re=[[] for i in range(self.n)]
return
def add_edge(self,s,t):
self.e[s]+=[t]
self.re[t]+=[s]
return
def scc(self):
v=[0]*self.n
g=[0]*self.n
o=[]
for i in range(self.n):
if v[i]==0:
q=[i]
while len(q)>0:
s=q[-1]
v[s]=1
while g[s]<len(self.e[s]):
t=self.e[s][g[s]]
if v[t]==0:
break
g[s]+=1
if g[s]<len(self.e[s]):
q+=[t]
else:
o+=[s]
q.pop()
c=[-1]*self.n
p=0
for i in o[::-1]:
if c[i]==-1:
s=i
c[s]=p
q=[s]
for s in q:
for t in self.re[s]:
if c[t]==-1:
c[t]=p
q+=[t]
p+=1
E=[[] for i in range(p)]
for s in range(self.n):
for t in self.e[s]:
if c[s]!=c[t]:
E[c[s]]+=[c[t]]
d=[0]*p
for s in range(p):
for t in E[s]:
d[t]+=1
ts=[]
q=[i for i in range(p) if d[i]==0]
for s in q:
ts+=[s]
for t in E[s]:
d[t]-=1
if d[t]==0:
q+=[t]
d=[0]*p
for i in range(p):
d[ts[i]]=i
l=[[] for i in range(p)]
for i in range(self.n):
l[d[c[i]]]+=[i]
return l
class TwoSAT():
def __init__(self,n):
self.n=n
self.g=SCC(self.n*2)
return
def add_clause(self,i,fi,j,fj):
self.g.add_edge(i+self.n*(fi^1),j+self.n*(fj^0))
self.g.add_edge(j+self.n*(fj^1),i+self.n*(fi^0))
return
def satisfiable(self):
l=self.g.scc()
self.c=[0]*n*2
for i in range(len(l)):
for j in l[i]:
self.c[j]=i
return all(self.c[i]!=self.c[i+self.n] for i in range(self.n))
def answer(self):
return [int(self.c[i]<self.c[i+self.n]) for i in range(self.n)]
n,m=map(int,input().split())
w=[tuple(map(int,input().split())) for i in range(n)]
g=TwoSAT(n)
for i in range(n-1):
for j in range(i+1,n):
for fi in range(2):
for fj in range(2):
li,ri=w[i]
if fi:
li,ri=m-1-ri,m-1-li
lj,rj=w[j]
if fj:
lj,rj=m-1-rj,m-1-lj
if min(ri,rj)-max(li,lj)+1>0:
g.add_clause(i,fi^1,j,fj^1)
print(["NO","YES"][g.satisfiable()])
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0