結果
| 問題 | 
                            No.3031 曲面の向き付け
                             | 
                    
| コンテスト | |
| ユーザー | 
                             sasa8uyauya
                         | 
                    
| 提出日時 | 2025-02-21 23:32:42 | 
| 言語 | PyPy3  (7.3.15)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 1,328 ms / 2,000 ms | 
| コード長 | 1,820 bytes | 
| コンパイル時間 | 859 ms | 
| コンパイル使用メモリ | 81,976 KB | 
| 実行使用メモリ | 204,572 KB | 
| 最終ジャッジ日時 | 2025-02-21 23:32:59 | 
| 合計ジャッジ時間 | 13,702 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge5 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 29 | 
ソースコード
n=int(input())
e={}
v=[]
for i in range(n):
  a,b,c=map(int,input().split())
  for p in [(a,b),(b,c),(a,c)]:
    if p not in e:
      e[p]=[]
    e[p]+=[(a,b,c)]
    if len(e[p])==3:
      print("NO")
      exit()
  v+=[(a,b,c)]
u=set()
f={o:0 for o in v}
for o in v:
  if o not in u:
    q=[o]
    u.add(o)
    for s in q:
      a,b,c=s
      for p in [(a,b),(b,c),(a,c)]:
        if len(e[p])==2:
          t=e[p][e[p][0]==s]
          ta,tb,tc=t
          if t not in u:
            q+=[t]
            u.add(t)
            if f[s]:
              if p==(a,b):
                f[t]=int(a==ta and b==tc)
              if p==(b,c):
                f[t]=int(b==ta and c==tc)
              if p==(a,c):
                f[t]=1-int(a==ta and c==tc)
            else:
              if p==(a,b):
                f[t]=1-int(a==ta and b==tc)
              if p==(b,c):
                f[t]=1-int(b==ta and c==tc)
              if p==(a,c):
                f[t]=int(a==ta and c==tc)
          else:
            if f[s]:
              if p==(a,b):
                if f[t]!=int(a==ta and b==tc):
                  print("NO")
                  exit()
              if p==(b,c):
                if f[t]!=int(b==ta and c==tc):
                  print("NO")
                  exit()
              if p==(a,c):
                if f[t]!=1-int(a==ta and c==tc):
                  print("NO")
                  exit()
            else:
              if p==(a,b):
                if f[t]!=1-int(a==ta and b==tc):
                  print("NO")
                  exit()
              if p==(b,c):
                if f[t]!=1-int(b==ta and c==tc):
                  print("NO")
                  exit()
              if p==(a,c):
                if f[t]!=int(a==ta and c==tc):
                  print("NO")
                  exit()
print("YES")
            
            
            
        
            
sasa8uyauya