Submission #691208
Source Code Expand
// tsukasa_diary's programing contest code template
#include <bits/stdc++.h>
using namespace std;
#define TSUKASA_DIARY_S_TEMPLATE
// define
#define for_(i,a,b) for(int i=(a);i<(b);++i)
#define for_rev(i,a,b) for(int i=(a);i>=(b);--i)
#define allof(a) (a).begin(),(a).end()
#define minit(a,b) memset(a,b,sizeof(a))
#define size_of(a) int((a).size())
#define cauto const auto
// typedef
typedef long long lint;
typedef double Double;
typedef pair< int, int > pii;
template< typename T > using Vec = vector< T >;
template< typename T > using Matrix = Vec< Vec< T > >;
template< typename T > using USet = unordered_set< T >;
template< typename T, class C > using MyUSet = unordered_set< T, C >;
template< typename T, typename F > using UMap = unordered_map< T, F >;
template< typename T, typename F, class C > using MyUMap = unordered_map< T, F, C >;
// hash
class PiiHash { public: size_t operator () (const pii& p) const { return (p.first << 16) | p.second; } };
// popcount
inline int POPCNT(int x) { return __builtin_popcount(x); }
inline int POPCNT(lint x) { return __builtin_popcount(x); }
// inf
const int iINF = 1L << 30;
const lint lINF = 1LL << 60;
// eps
const Double EPS = 1e-9;
const Double PI = acos(-1);
// inrange
template< typename T >
inline bool in_range(T v, T mi, T mx) { return mi <= v && v < mx; }
template< typename T >
inline bool in_range(T x, T y, T W, T H) { return in_range(x,0,W) && in_range(y,0,H); }
// neighbor clockwise
const int DX[4] = {0,1,0,-1}, DY[4] = {-1,0,1,0};
const int DX_[8] = {0,1,1,1,0,-1,-1,-1}, DY_[8] = {-1,-1,0,1,1,1,0,-1};
// variable update
template< typename T > inline void modAdd(T& a, T b, T mod) { a = (a + b) % mod; }
template< typename T > inline void minUpdate(T& a, T b) { a = min(a, b); }
template< typename T > inline void maxUpdate(T& a, T b) { a = max(a, b); }
// converter
template< typename F, typename T >
inline void convert(F& from, T& to) {
stringstream ss;
ss << from; ss >> to;
}
struct State { int x, y; };
int R, C, sy, sx, gy, gx;
string grid[55];
int step[55][55];
void solve() {
minit(step, -1);
queue< State > que;
que.push(State{sx, sy});
step[sy][sx] = 0;
while (!que.empty()) {
State s = que.front(); que.pop();
for_(d,0,4) {
int nx = s.x + DX[d], ny = s.y + DY[d];
if (nx < 0 || C <= nx || ny < 0 || R <= ny) continue;
if (grid[ny][nx] == '#') continue;
if (step[ny][nx] < 0) {
step[ny][nx] = step[s.y][s.x] + 1;
que.push(State{nx, ny});
}
}
}
cout << step[gy][gx] << endl;
}
int main() {
cin >> R >> C;
cin >> sy >> sx;
--sy; --sx;
cin >> gy >> gx;
--gy; --gx;
for_(i,0,R) cin >> grid[i];
solve();
}
Submission Info
Submission Time |
|
Task |
A - 幅優先探索 |
User |
tsukasa_diary |
Language |
C++14 (GCC 5.4.1) |
Score |
100 |
Code Size |
2748 Byte |
Status |
AC |
Exec Time |
89 ms |
Memory |
764 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
100 / 100 |
Status |
|
|
Set Name |
Test Cases |
Sample |
subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt |
All |
subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt |
Case Name |
Status |
Exec Time |
Memory |
subtask0_sample01.txt |
AC |
89 ms |
764 KB |
subtask0_sample02.txt |
AC |
4 ms |
256 KB |
subtask0_sample03.txt |
AC |
4 ms |
256 KB |
subtask1_01.txt |
AC |
4 ms |
256 KB |
subtask1_02.txt |
AC |
4 ms |
256 KB |
subtask1_03.txt |
AC |
4 ms |
256 KB |
subtask1_04.txt |
AC |
4 ms |
256 KB |
subtask1_05.txt |
AC |
4 ms |
256 KB |
subtask1_06.txt |
AC |
4 ms |
256 KB |
subtask1_07.txt |
AC |
4 ms |
256 KB |
subtask1_08.txt |
AC |
4 ms |
256 KB |
subtask1_09.txt |
AC |
4 ms |
256 KB |
subtask1_10.txt |
AC |
4 ms |
256 KB |
subtask1_11.txt |
AC |
4 ms |
256 KB |
subtask1_12.txt |
AC |
4 ms |
256 KB |
subtask1_13.txt |
AC |
4 ms |
256 KB |
subtask1_14.txt |
AC |
4 ms |
256 KB |
subtask1_15.txt |
AC |
4 ms |
256 KB |
subtask1_16.txt |
AC |
4 ms |
256 KB |
subtask1_17.txt |
AC |
4 ms |
256 KB |
subtask1_18.txt |
AC |
4 ms |
256 KB |
subtask1_19.txt |
AC |
5 ms |
256 KB |
subtask1_20.txt |
AC |
5 ms |
256 KB |
subtask1_21.txt |
AC |
4 ms |
256 KB |
subtask1_22.txt |
AC |
5 ms |
256 KB |