結果
| 問題 |
No.3031 曲面の向き付け
|
| コンテスト | |
| ユーザー |
nikoro256
|
| 提出日時 | 2025-02-21 23:15:16 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,426 bytes |
| コンパイル時間 | 4,948 ms |
| コンパイル使用メモリ | 82,224 KB |
| 実行使用メモリ | 204,080 KB |
| 最終ジャッジ日時 | 2025-02-21 23:15:40 |
| 合計ジャッジ時間 | 17,390 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 27 WA * 2 |
ソースコード
from collections import defaultdict
from collections import deque
M=int(input())
dic=defaultdict(list)
dat=[]
l=[[] for _ in range(M)]
for i in range(M):
A,B,C=map(int,input().split())
dat.append((A,B,C))
l[i]=[[A,B],[B,C],[C,A]]
dic[(A,B)].append(i)
dic[(B,C)].append(i)
dic[(A,C)].append(i)
edge=[[] for _ in range(M)]
for k in dic.keys():
if len(dic[k]) >= 3:
print("NO")
exit()
if len(dic[k]) == 1:
continue
p=dic[k][0]
p2=dic[k][1]
se=set(dat[p])&set(dat[p2])
if len(l)==3:
sel=list(se)
use = [[sel[0],sel[1]],[sel[1],sel[2]],[sel[2],sel[0]]]
else:
sel=list(se)
use = [[sel[0],sel[1]]]
for a,b in use:
#print(a,b,l[p],l[p2],int([a,b] in l[p] ),int( [a,b] in l[p2]))
if int([a,b] in l[p] )^int( [a,b] in l[p2])==0:
edge[p].append((p2,-1))
edge[p2].append((p,-1))
else:
edge[p].append((p2,1))
edge[p2].append((p,1))
di=[0 for _ in range(M)]
for i in range(M):
if di[i]==0:
di[0]=1
dq=deque([0])
while len(dq)!=0:
p = dq.popleft()
for e,o in edge[p]:
if di[e]==0:
di[e]=di[p]*o
dq.append(e)
else:
if di[e]!=di[p]*o:
print("NO")
exit()
print("YES")
nikoro256