結果
| 問題 | No.8063 幅優先探索 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-01-30 23:13:14 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,023 bytes |
| 記録 | |
| コンパイル時間 | 3,634 ms |
| コンパイル使用メモリ | 340,588 KB |
| 実行使用メモリ | 9,180 KB |
| 最終ジャッジ日時 | 2026-01-30 23:13:19 |
| 合計ジャッジ時間 | 4,648 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 5 WA * 4 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
int main(void){
int r,c,sy,sx,gy,gx;
cin>>r>>c>>sy>>sx>>gy>>gx;
string s[r];
for(int i=0;i<r;i++){
cin>>s[i];
}
int a[r][c];
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
a[i][j]=100000000;
}
}
queue<pair<int,int>>q;
q.push({sy-1,sx-1});
a[sy-1][sx-1]=0;
int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
while(!q.empty()){
int y=q.front().first;
int x=q.front().second;
q.pop();
if(y+1==gy&&x+1==gx){
cout<<a[y][x]<<endl;
return 0;
}
for(int i=0;i<4;i++){
if(0<=y+dir[i][0]&&y+dir[i][0]<r&&0<=x+dir[i][1]&&x+dir[i][1]<c){
if(s[y+dir[i][0]][x+dir[i][1]]=='.'&&a[y+dir[i][0]][x+dir[i][1]]>a[y][x]+1){
q.push({y+dir[i][0],x+dir[i][1]});
a[y+dir[i][0]][x+dir[i][1]]=a[y][x]+1;
}
}
}
}
cout<<-1<<endl;
return 0;
}