結果
| 問題 |
No.2948 move move rotti
|
| コンテスト | |
| ユーザー |
MM
|
| 提出日時 | 2024-10-25 22:34:43 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 1,691 bytes |
| コンパイル時間 | 6,752 ms |
| コンパイル使用メモリ | 336,700 KB |
| 実行使用メモリ | 813,928 KB |
| 最終ジャッジ日時 | 2024-10-25 22:34:57 |
| 合計ジャッジ時間 | 10,029 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | MLE * 1 -- * 27 |
ソースコード
#include<bits/stdc++.h>
#include<atcoder/all>
#define chmin(x,y) (x) = min((x),(y))
#define chmax(x,y) (x) = max((x),(y))
using namespace std;
using namespace atcoder;
using ll = long long;
const ll mod = 998244353;
using mint = modint998244353;
using Graph = vector<vector<pair<int,ll>>>;
const vector<int> dx = {1,0,-1,0}, dy = {0,1,0,-1};
pair<int,int> song(int a, int b, int n){
for(int x = int(n/a); x >= 0; x--){
int y = n - a*x;
if(y % b == 0)
return(make_pair(x,y/b));
}
return(make_pair(-1,-1));
}
vector<int> BFS_bit(vector<vector<int>> g, int s){
int n = g.size();
vector<int> res(n,0);
queue<tuple<int,int,int>> q;
q.emplace(s,0,(1<<s));
res[s] = 1;
while(!q.empty()){
auto[now,stp,visited] = q.front();
q.pop();
for(int nxt = 0; nxt < n; nxt++){
if(g[now][nxt] == 1 && !(visited & (1<<nxt))){
res[nxt] |= (1<<(stp+1));
q.emplace(nxt,stp+1, visited | (1<<nxt));
}
}
}
return res;
}
int main(){
// input
int N,M,K;
cin >> N >> M >> K;
vector<int> X(K);
for(int i = 0; i < K; i++){
cin >> X[i]; --X[i];
}
// prep
vector<vector<int>> G(N,vector<int>(N,0));
while(M--){
int u,v;
cin >> u >> v;
--u; --v;
G[u][v] = 1;
G[v][u] = 1;
}
vector<vector<int>> D(K,vector<int>(N));
for(int i = 0; i < K; i++)
D[i] = BFS_bit(G,X[i]);
// solve
bool can = 0;
for(int x = 0; x < N; x++){
int vst_time = D[0][x];
for(int i = 1; i < K; i++){
vst_time &= D[i][x];
if(!vst_time) continue;
}
if(vst_time){
can = 1;
break;
}
}
// output
cout << (can ? "Yes" : "No") << endl;
}
MM