結果
問題 | No.2948 move move rotti |
ユーザー | ねしん |
提出日時 | 2024-10-25 22:56:04 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 2,285 ms / 4,000 ms |
コード長 | 856 bytes |
コンパイル時間 | 474 ms |
コンパイル使用メモリ | 82,704 KB |
実行使用メモリ | 243,596 KB |
最終ジャッジ日時 | 2024-10-25 22:56:16 |
合計ジャッジ時間 | 11,038 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 28 |
ソースコード
from collections import deque N,M,K=list(map(int,input().split())) X=list(map(int,input().split())) #print(X) if len(set(X))==1: print("Yes") exit() path=[] for i in range(N): path.append([]) for j in range(M): u,v=list(map(int,input().split())) u-=1 v-=1 path[u].append(v) path[v].append(u) for i in range(K): X[i]-=1 for i in range(N): Q=deque() check=set() Q.append((2**i,i,0)) check.add((2**i,i)) cnt=[] for j in range(N): cnt.append(set()) while len(Q)>0: c,p,d=Q.popleft() #if i==3: #print(c,p,d) for j in path[p]: if c&2**j==0 and (c|2**j,j) not in check: check.add((c|2**j,j)) Q.append((c|2**j,j,d+1)) cnt[j].add(d+1) g=set() for j in range(N): g.add(j) for j in X: g=g&cnt[j] #print(i,g,cnt) if len(g)!=0: print("Yes") exit() print("No")