結果
| 問題 | No.3326 岩井星人の帰星 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-10-30 01:43:48 |
| 言語 | C++23(gcc16) (gcc 16.2.0 + boost 1.92.0 + ACL) |
| 結果 |
WA
不安定
|
| 実行時間 | - |
| コード長 | 1,412 bytes |
| 記録 | |
| コンパイル時間 | 2,861 ms |
| コンパイル使用メモリ | 197,484 KB |
| 実行使用メモリ | 16,712 KB |
| 最終ジャッジ日時 | 2026-10-30 01:44:08 |
| 合計ジャッジ時間 | 17,368 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 58 WA * 1 |
ソースコード
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
using Graph = vector<vector<int>>;
int N, M;
Graph G(200010);
bool ok[200010];
int D[200010];
void bfs_forbidden(int src, int dist){
for (int i=1;i<=N;i++) D[i]=-1;
D[src]=0;
ok[src]=false;
queue<int> Q;
Q.push(src);
while(! Q.empty()){
int cur = Q.front(); Q.pop();
if (D[cur]==dist) continue;
for (auto dst:G[cur]){
if(! ok[dst]) continue;
D[dst]=D[cur]+1;
ok[dst]=false;
Q.push(dst);
}
}
return;
}
int main(){
cin>>N>>M;
for (int i=0;i<M;i++){
int U, V; cin>>U>>V;
G[U].push_back(V);
G[V].push_back(U);
}
int L; cin>>L;
fill(&ok[0], &ok[0]+200010, true);
for (int i=0;i<L;i++){
int J, K; cin>>J>>K;
bfs_forbidden(J, K);
}
if(! ok[1]) {
cout << "No" << "\n";
return 0;
}
for (int i=1;i<=N;i++) D[i]=-1;
D[1]=0;
queue<int> Q;
Q.push(1);
while(! Q.empty()){
int cur = Q.front(); Q.pop();
for (auto dst:G[cur]){
if(! ok[dst]) continue;
if(D[dst]!=-1) continue;
D[dst]=D[cur]+1;
Q.push(dst);
}
}
if(D[N]!=-1) {
cout << "Yes" << "\n";
cout << D[N] << "\n";
}
else cout << "No" << "\n";
return 0;
}