結果
問題 |
No.2948 move move rotti
|
ユーザー |
![]() |
提出日時 | 2024-10-25 22:17:10 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,641 bytes |
コンパイル時間 | 6,524 ms |
コンパイル使用メモリ | 337,748 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-10-25 22:17:29 |
合計ジャッジ時間 | 7,407 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 24 WA * 4 |
ソースコード
#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(vector<vector<int>> g, int s){ int n = g.size(); vector<int> res(n,-1); queue<pair<int,int>> q; q.emplace(s,0); res[s] = 0; while(!q.empty()){ auto[now,stp] = q.front(); q.pop(); for(int nxt = 0; nxt < n; nxt++){ if(g[now][nxt] == 1 && res[nxt] == -1){ res[nxt] = stp+1; q.emplace(nxt,stp+1); } } } 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); for(int i = 0; i < K; i++) D[i] = BFS(G,X[i]); // solve bool can = 0; for(int x = 0; x < N; x++){ // x : destination if(D[0][x] < 0) continue; bool tmp = 1; for(int i = 1; i < K; i++){ if(D[i][x] != D[0][x]) tmp = 0; } if(tmp){ can = 1; break; } } // output cout << (can ? "Yes" : "No") << endl; }