結果
問題 | No.274 The Wall |
ユーザー |
![]() |
提出日時 | 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 |
ソースコード
class SCC():def __init__(self,n):self.n=nself.e=[[] for i in range(self.n)]self.re=[[] for i in range(self.n)]returndef add_edge(self,s,t):self.e[s]+=[t]self.re[t]+=[s]returndef scc(self):v=[0]*self.ng=[0]*self.no=[]for i in range(self.n):if v[i]==0:q=[i]while len(q)>0:s=q[-1]v[s]=1while g[s]<len(self.e[s]):t=self.e[s][g[s]]if v[t]==0:breakg[s]+=1if g[s]<len(self.e[s]):q+=[t]else:o+=[s]q.pop()c=[-1]*self.np=0for i in o[::-1]:if c[i]==-1:s=ic[s]=pq=[s]for s in q:for t in self.re[s]:if c[t]==-1:c[t]=pq+=[t]p+=1E=[[] 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]*pfor s in range(p):for t in E[s]:d[t]+=1ts=[]q=[i for i in range(p) if d[i]==0]for s in q:ts+=[s]for t in E[s]:d[t]-=1if d[t]==0:q+=[t]d=[0]*pfor i in range(p):d[ts[i]]=il=[[] for i in range(p)]for i in range(self.n):l[d[c[i]]]+=[i]return lclass TwoSAT():def __init__(self,n):self.n=nself.g=SCC(self.n*2)returndef 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))returndef satisfiable(self):l=self.g.scc()self.c=[0]*n*2for i in range(len(l)):for j in l[i]:self.c[j]=ireturn 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-lilj,rj=w[j]if fj:lj,rj=m-1-rj,m-1-ljif min(ri,rj)-max(li,lj)+1>0:g.add_clause(i,fi^1,j,fj^1)print(["NO","YES"][g.satisfiable()])