提出 #70786449
ソースコード 拡げる
#include<bits/stdc++.h>
//bool Mst;
using namespace std;
using ll=long long;
using ld=long double;
//#define int ll
using pii=pair<int,int>;
const int inf=1e9;
pii sb[]={pii{0,1},pii{1,0},pii{0,-1},pii{-1,0}};
//bool Med;
signed main()
{
// cerr<<"Memory Size: "<<abs((&Med)-(&Mst))/1024.0/1024<<" MB\n";
// ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
// freopen("in.in","r",stdin);
// freopen("out.out","w",stdout);
int t;cin>>t;
while(t--) [&]()
{
int n,m;
cin>>n>>m;
vector<vector<array<int,4>>> dis(n,vector<array<int,4>>(m,{inf,inf,inf,inf}));
struct node
{
int x,y,dir,d;
};
auto upd=[&](node nd)->int
{
auto [x,y,dir,d]=nd;
if(dis[x][y][dir]>d) return dis[x][y][dir]=d,1;
return 0;
};
deque<node> dq;
vector<string> mp(n);
for(int i=0;i<n;i++) cin>>mp[i];
if(mp[0][0]=='A') dq.push_back({0,0,0,0});
else if(mp[0][0]=='B') dq.push_back({0,0,1,0});
else if(mp[0][0]=='C') dq.push_back({0,0,3,0});
for(int dir:{0,1,2,3}) dq.push_back({0,0,dir,1});
while(dq.size())
{
auto nd=dq.front();dq.pop_front();
auto [x,y,dir,d]=nd;
if(!upd(nd)) continue;
int xx=x+sb[dir].first,yy=y+sb[dir].second;
if(xx>=n||yy>=m||xx<0||yy<0) continue;
if(mp[xx][yy]=='A') dq.push_front({xx,yy,dir,d});
else if(mp[xx][yy]=='B') dq.push_front({xx,yy,dir^1,d});
else if(mp[xx][yy]=='C') dq.push_front({xx,yy,3-dir,d});
for(int dir:{0,1,2,3}) dq.push_back({xx,yy,dir,d+1});
}
cout<<dis[n-1][m-1][0]<<"\n";
}();
return 0;
}
提出情報
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
500 / 500 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00_sample_00.txt |
| All |
00_sample_00.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_00.txt |
AC |
1 ms |
3424 KiB |
| 01_test_00.txt |
AC |
83 ms |
3580 KiB |
| 01_test_01.txt |
AC |
54 ms |
3488 KiB |
| 01_test_02.txt |
AC |
48 ms |
3600 KiB |
| 01_test_03.txt |
AC |
48 ms |
3376 KiB |
| 01_test_04.txt |
AC |
46 ms |
3552 KiB |
| 01_test_05.txt |
AC |
45 ms |
4148 KiB |
| 01_test_06.txt |
AC |
43 ms |
4928 KiB |
| 01_test_07.txt |
AC |
45 ms |
5472 KiB |
| 01_test_08.txt |
AC |
26 ms |
9556 KiB |
| 01_test_09.txt |
AC |
42 ms |
20552 KiB |
| 01_test_10.txt |
AC |
38 ms |
8060 KiB |
| 01_test_11.txt |
AC |
48 ms |
13564 KiB |
| 01_test_12.txt |
AC |
41 ms |
7412 KiB |
| 01_test_13.txt |
AC |
47 ms |
11028 KiB |
| 01_test_14.txt |
AC |
45 ms |
6720 KiB |
| 01_test_15.txt |
AC |
48 ms |
7932 KiB |
| 01_test_16.txt |
AC |
48 ms |
11128 KiB |
| 01_test_17.txt |
AC |
50 ms |
10560 KiB |
| 01_test_18.txt |
AC |
63 ms |
38184 KiB |
| 01_test_19.txt |
AC |
59 ms |
31876 KiB |
| 01_test_20.txt |
AC |
28 ms |
20244 KiB |
| 01_test_21.txt |
AC |
22 ms |
9544 KiB |
| 01_test_22.txt |
AC |
46 ms |
33876 KiB |
| 01_test_23.txt |
AC |
40 ms |
20684 KiB |
| 01_test_24.txt |
AC |
30 ms |
8020 KiB |
| 01_test_25.txt |
AC |
38 ms |
13512 KiB |
| 01_test_26.txt |
AC |
35 ms |
6788 KiB |
| 01_test_27.txt |
AC |
37 ms |
7892 KiB |
| 01_test_28.txt |
AC |
59 ms |
45796 KiB |
| 01_test_29.txt |
AC |
38 ms |
7092 KiB |
| 01_test_30.txt |
AC |
40 ms |
7228 KiB |
| 01_test_31.txt |
AC |
41 ms |
32908 KiB |
| 01_test_32.txt |
AC |
42 ms |
32856 KiB |
| 01_test_33.txt |
AC |
58 ms |
46212 KiB |
| 01_test_34.txt |
AC |
59 ms |
46088 KiB |