結果
問題 | No.2948 move move rotti |
ユーザー | titia |
提出日時 | 2024-10-25 22:48:50 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 3,451 ms / 4,000 ms |
コード長 | 941 bytes |
コンパイル時間 | 362 ms |
コンパイル使用メモリ | 82,496 KB |
実行使用メモリ | 275,712 KB |
最終ジャッジ日時 | 2024-10-25 22:49:16 |
合計ジャッジ時間 | 25,845 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 28 |
ソースコード
import sys input = sys.stdin.readline N,M,K=map(int,input().split()) X=list(map(int,input().split())) for i in range(K): X[i]-=1 E=[[] for i in range(N)] for i in range(M): u,v=map(int,input().split()) u-=1 v-=1 E[u].append(v) E[v].append(u) def calc(x): LIST=[set() for i in range(N)] LIST[0].add(x) Q=[(x,1<<x,0)] USE=set((x,1<<x,0)) while Q: now,hist,kai=Q.pop() for to in E[now]: if hist & (1<<to) == 0: hist2=hist|(1<<to) necq=(to,hist2,kai+1) if necq in USE: continue LIST[kai+1].add(to) USE.add(necq) Q.append(necq) return LIST LIST=[set(range(N)) for i in range(N)] for x in X: L=calc(x) for i in range(N): LIST[i]&=L[i] for i in range(N): if len(LIST[i])>0: print("Yes") exit() print("No")