結果
問題 |
No.1153 ねこちゃんゲーム
|
ユーザー |
![]() |
提出日時 | 2025-07-20 03:52:45 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,012 ms / 2,500 ms |
コード長 | 1,148 bytes |
コンパイル時間 | 431 ms |
コンパイル使用メモリ | 82,608 KB |
実行使用メモリ | 153,228 KB |
最終ジャッジ日時 | 2025-07-20 03:53:24 |
合計ジャッジ時間 | 39,015 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 40 |
ソースコード
n,m=map(int,input().split()) a=list(map(int,input().split())) e=[[] for i in range(n)] for i in range(n-1): u,v=map(int,input().split()) u-=1 v-=1 e[u]+=[v] e[v]+=[u] v=[0]*n p=[0]*n u1=[0]*n c=[[0]*(len(e[i])+1) for i in range(n)] q=[0] while len(q)>0: s=q[-1] if v[s]==0: v[s]=1 for t in e[s]: if v[t]==0: p[t]=s q+=[t] else: for t in e[s]: if v[t]==0 and u1[t]<=len(e[s]): c[s][u1[t]]+=1 for i in range(len(e[s])+1): if c[s][i]==0: u1[s]=i break v[s]=0 q.pop() u2=[0]*n u3=[0]*n q=[0] v[0]=1 for s in q: if s!=0: if u2[s]<=len(e[s]): c[s][u2[s]]+=1 for i in range(len(e[s])+1): if c[s][i]==0: u3[s]=i break g=u3[s] for t in e[s]: if v[t]==0: u2[t]=u1[t] if u1[t]<g and c[s][u1[t]]-1==0 else g q+=[t] v[t]=1 f=[0]*n for y in a: f[y-1]^=1 g=0 for s in range(n): if f[s]: g^=u3[s] if g==0: print(-1,-1) exit() for s in range(n): if f[s]: for t in e[s]: if (p[s]!=t and g^u3[s]^u1[t]==0) or (p[s]==t and g^u3[s]^u2[s]==0): print(a.index(s+1)+1,t+1) exit()