Submission #6326465


Source Code Expand

#define _CRT_SECURE_NO_WARNINGS
#include "bits/stdc++.h"
#include <iostream>
#include <random>
#include <unordered_map>
#include <unordered_set>
#include <immintrin.h>
#ifdef _MSC_VER
#include <ppl.h>
#endif

using namespace std;

//呪文
#define DUMPOUT std::cerr
#define dump(...) DUMPOUT<<"  ";DUMPOUT<<#__VA_ARGS__<<" :["<<__LINE__<<":"<<__FUNCTION__<<"]"<<std::endl;DUMPOUT<<"    ";dump_func(__VA_ARGS__)

typedef unsigned uint; typedef long long ll; typedef unsigned long long ull; typedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef pair<double, double> pdd; typedef pair<string, string> pss;
template <typename _KTy, typename _Ty> ostream& operator << (ostream& o, const pair<_KTy, _Ty>& m) { o << "{" << m.first << ", " << m.second << "}"; return o; }
template <typename _KTy, typename _Ty> ostream& operator << (ostream& o, const map<_KTy, _Ty>& m) { if (m.empty()) { o << "{ }"; return o; } o << "{" << *m.begin(); for (auto itr = ++m.begin(); itr != m.end(); itr++) { o << ", " << *itr; } o << "}"; return o; }
template <typename _KTy, typename _Ty> ostream& operator << (ostream& o, const unordered_map<_KTy, _Ty>& m) { if (m.empty()) { o << "{ }"; return o; } o << "{" << *m.begin(); for (auto itr = ++m.begin(); itr != m.end(); itr++) { o << ", " << *itr; } o << "}"; return o; }
template <typename _Ty> ostream& operator << (ostream& o, const vector<_Ty>& v) { if (v.empty()) { o << "{ }"; return o; } o << "{" << v.front(); for (auto itr = ++v.begin(); itr != v.end(); itr++) { o << ", " << *itr; } o << "}"; return o; }
template <typename _Ty> ostream& operator << (ostream& o, const set<_Ty>& s) { if (s.empty()) { o << "{ }"; return o; } o << "{" << *(s.begin()); for (auto itr = ++s.begin(); itr != s.end(); itr++) { o << ", " << *itr; } o << "}"; return o; }
template <typename _Ty> ostream& operator << (ostream& o, const unordered_set<_Ty>& s) { if (s.empty()) { o << "{ }"; return o; } o << "{" << *(s.begin()); for (auto itr = ++s.begin(); itr != s.end(); itr++) { o << ", " << *itr; }	o << "}"; return o; }
template <typename _Ty> ostream& operator << (ostream& o, const stack<_Ty>& s) { if (s.empty()) { o << "{ }"; return o; } stack<_Ty> t(s); o << "{" << t.top(); t.pop(); while (!t.empty()) { o << ", " << t.top(); t.pop(); } o << "}";	return o; }
template <typename _Ty> ostream& operator << (ostream& o, const list<_Ty>& l) { if (l.empty()) { o << "{ }"; return o; } o << "{" << l.front(); for (auto itr = ++l.begin(); itr != l.end(); ++itr) { o << ", " << *itr; } o << "}"; return o; }
template <typename _KTy, typename _Ty> istream& operator >> (istream& is, pair<_KTy, _Ty>& m) { is >> m.first >> m.second; return is; }
template <typename _Ty> istream& operator >> (istream& is, vector<_Ty>& v) { for (size_t i = 0; i < v.size(); i++) is >> v[i]; return is; }
namespace aux { // print tuple
	template<typename Ty, unsigned N, unsigned L> struct tp { static void print(ostream& os, const Ty& v) { os << get<N>(v) << ", "; tp<Ty, N + 1, L>::print(os, v); } };
	template<typename Ty, unsigned N> struct tp<Ty, N, N> { static void print(ostream& os, const Ty& v) { os << get<N>(v); } };
}
template<typename... Tys> ostream& operator<<(ostream& os, const tuple<Tys...>& t) { os << "{"; aux::tp<tuple<Tys...>, 0, sizeof...(Tys) - 1>::print(os, t); os << "}"; return os; }

template<typename A, size_t N, typename T> inline void Fill(A(&array)[N], const T &val) { std::fill((T*)array, (T*)(array + N), val); }

void dump_func() { DUMPOUT << std::endl; }
template <class Head, class... Tail> void dump_func(Head&& head, Tail&&... tail) { DUMPOUT << head; if (sizeof...(Tail) == 0) { DUMPOUT << " "; } else { DUMPOUT << ", "; } dump_func(std::move(tail)...); }

template<typename Ty>Ty modpow(Ty n, Ty e, Ty m) { Ty result = 1; while (e > 0) { if (e & 1)result = (result*n) % m; e >>= 1; n = (n*n) % m; }return result; }


#define PI 3.14159265358979323846
#define EPS 1e-10
#define FOR(i,a,n) for(int i=(a);i<(n);++i)
#define REP(i,n)  FOR(i,0,n)
#define all(j) (j).begin(), (j).end()
#define SZ(j) ((int)(j).size())
#define fake false



#define int long long

signed main() {

  cin.tie(0);
  ios::sync_with_stdio(false);

  int H, W;
  cin >> H >> W;
  vector<string> S(H);
  cin >> S;

  int si, sj, gi, gj;
  REP(i, H) REP(j, W) {
    if (S[i][j] == 's') tie(si, sj) = tie(i, j);
    if (S[i][j] == 'g') tie(gi, gj) = tie(i, j);
  }

  const int di[] = { 0, -1, 0, 1 };
  const int dj[] = { 1, 0, -1, 0 };

  bool flag = false;
  vector<vector<bool>> visit(H, vector<bool>(W, false));

  stack<pll> stk;
  stk.emplace(si, sj);
  visit[si][sj] = true;
  while (!stk.empty()) {
    int i, j;
    tie(i, j) = stk.top(); stk.pop();
    if (i == gi && j == gj) {
      cout << "Yes" << endl;
      return 0;
    }
    REP(d, 4) {
      int ni = i + di[d], nj = j + dj[d];
      if (ni < 0 || ni >= H || nj < 0 || nj >= W || S[ni][nj] == '#' || visit[ni][nj]) continue;
      stk.emplace(ni, nj);
      visit[ni][nj] = true;
    }
  }
  cout << "No" << endl;

	return 0;
}

Submission Info

Submission Time
Task A - 深さ優先探索
User komori3
Language C++14 (GCC 5.4.1)
Score 100
Code Size 5108 Byte
Status AC
Exec Time 10 ms
Memory 2560 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 5
AC × 83
Set Name Test Cases
Sample 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, 00_sample_05.txt
All 00_min_01.txt, 00_min_02.txt, 00_min_03.txt, 00_min_04.txt, 00_min_05.txt, 00_min_06.txt, 00_min_07.txt, 00_min_08.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, 00_sample_05.txt, 01_rnd_00.txt, 01_rnd_01.txt, 01_rnd_02.txt, 01_rnd_03.txt, 01_rnd_04.txt, 01_rnd_05.txt, 01_rnd_06.txt, 01_rnd_07.txt, 01_rnd_08.txt, 01_rnd_09.txt, 01_rnd_10.txt, 01_rnd_11.txt, 01_rnd_12.txt, 01_rnd_13.txt, 01_rnd_14.txt, 01_rnd_15.txt, 01_rnd_16.txt, 01_rnd_17.txt, 01_rnd_18.txt, 01_rnd_19.txt, 02_rndhard_00.txt, 02_rndhard_01.txt, 02_rndhard_02.txt, 02_rndhard_03.txt, 02_rndhard_04.txt, 02_rndhard_05.txt, 02_rndhard_06.txt, 02_rndhard_07.txt, 02_rndhard_08.txt, 02_rndhard_09.txt, 02_rndhard_10.txt, 02_rndhard_11.txt, 02_rndhard_12.txt, 02_rndhard_13.txt, 02_rndhard_14.txt, 02_rndhard_15.txt, 02_rndhard_16.txt, 02_rndhard_17.txt, 02_rndhard_18.txt, 02_rndhard_19.txt, 02_rndhard_20.txt, 02_rndhard_21.txt, 02_rndhard_22.txt, 02_rndhard_23.txt, 02_rndhard_24.txt, 02_rndhard_25.txt, 02_rndhard_26.txt, 02_rndhard_27.txt, 02_rndhard_28.txt, 02_rndhard_29.txt, 02_rndhard_30.txt, 02_rndhard_31.txt, 02_rndhard_32.txt, 02_rndhard_33.txt, 02_rndhard_34.txt, 02_rndhard_35.txt, 02_rndhard_36.txt, 02_rndhard_37.txt, 02_rndhard_38.txt, 02_rndhard_39.txt, 03_rndhardsmall_00.txt, 03_rndhardsmall_01.txt, 03_rndhardsmall_02.txt, 03_rndhardsmall_03.txt, 03_rndhardsmall_04.txt, 03_rndhardsmall_05.txt, 03_rndhardsmall_06.txt, 03_rndhardsmall_07.txt, 03_rndhardsmall_08.txt, 03_rndhardsmall_09.txt
Case Name Status Exec Time Memory
00_min_01.txt AC 1 ms 256 KB
00_min_02.txt AC 1 ms 256 KB
00_min_03.txt AC 1 ms 256 KB
00_min_04.txt AC 1 ms 256 KB
00_min_05.txt AC 1 ms 256 KB
00_min_06.txt AC 1 ms 256 KB
00_min_07.txt AC 1 ms 256 KB
00_min_08.txt AC 1 ms 256 KB
00_sample_01.txt AC 1 ms 256 KB
00_sample_02.txt AC 1 ms 256 KB
00_sample_03.txt AC 1 ms 256 KB
00_sample_04.txt AC 1 ms 256 KB
00_sample_05.txt AC 1 ms 256 KB
01_rnd_00.txt AC 2 ms 640 KB
01_rnd_01.txt AC 7 ms 1792 KB
01_rnd_02.txt AC 5 ms 896 KB
01_rnd_03.txt AC 6 ms 2176 KB
01_rnd_04.txt AC 7 ms 2048 KB
01_rnd_05.txt AC 2 ms 640 KB
01_rnd_06.txt AC 3 ms 640 KB
01_rnd_07.txt AC 7 ms 1152 KB
01_rnd_08.txt AC 2 ms 640 KB
01_rnd_09.txt AC 2 ms 640 KB
01_rnd_10.txt AC 7 ms 640 KB
01_rnd_11.txt AC 2 ms 640 KB
01_rnd_12.txt AC 7 ms 1664 KB
01_rnd_13.txt AC 10 ms 1536 KB
01_rnd_14.txt AC 2 ms 640 KB
01_rnd_15.txt AC 3 ms 640 KB
01_rnd_16.txt AC 2 ms 640 KB
01_rnd_17.txt AC 8 ms 768 KB
01_rnd_18.txt AC 2 ms 640 KB
01_rnd_19.txt AC 9 ms 2560 KB
02_rndhard_00.txt AC 2 ms 640 KB
02_rndhard_01.txt AC 2 ms 640 KB
02_rndhard_02.txt AC 3 ms 640 KB
02_rndhard_03.txt AC 3 ms 640 KB
02_rndhard_04.txt AC 2 ms 640 KB
02_rndhard_05.txt AC 2 ms 640 KB
02_rndhard_06.txt AC 2 ms 640 KB
02_rndhard_07.txt AC 2 ms 640 KB
02_rndhard_08.txt AC 2 ms 640 KB
02_rndhard_09.txt AC 2 ms 640 KB
02_rndhard_10.txt AC 2 ms 640 KB
02_rndhard_11.txt AC 2 ms 640 KB
02_rndhard_12.txt AC 2 ms 640 KB
02_rndhard_13.txt AC 2 ms 640 KB
02_rndhard_14.txt AC 2 ms 640 KB
02_rndhard_15.txt AC 2 ms 640 KB
02_rndhard_16.txt AC 2 ms 640 KB
02_rndhard_17.txt AC 2 ms 640 KB
02_rndhard_18.txt AC 2 ms 640 KB
02_rndhard_19.txt AC 2 ms 640 KB
02_rndhard_20.txt AC 2 ms 640 KB
02_rndhard_21.txt AC 2 ms 640 KB
02_rndhard_22.txt AC 2 ms 640 KB
02_rndhard_23.txt AC 2 ms 640 KB
02_rndhard_24.txt AC 2 ms 640 KB
02_rndhard_25.txt AC 2 ms 640 KB
02_rndhard_26.txt AC 2 ms 640 KB
02_rndhard_27.txt AC 2 ms 640 KB
02_rndhard_28.txt AC 2 ms 640 KB
02_rndhard_29.txt AC 2 ms 640 KB
02_rndhard_30.txt AC 2 ms 640 KB
02_rndhard_31.txt AC 2 ms 640 KB
02_rndhard_32.txt AC 2 ms 640 KB
02_rndhard_33.txt AC 2 ms 640 KB
02_rndhard_34.txt AC 2 ms 640 KB
02_rndhard_35.txt AC 2 ms 640 KB
02_rndhard_36.txt AC 2 ms 640 KB
02_rndhard_37.txt AC 2 ms 640 KB
02_rndhard_38.txt AC 2 ms 640 KB
02_rndhard_39.txt AC 2 ms 640 KB
03_rndhardsmall_00.txt AC 1 ms 256 KB
03_rndhardsmall_01.txt AC 1 ms 256 KB
03_rndhardsmall_02.txt AC 1 ms 256 KB
03_rndhardsmall_03.txt AC 1 ms 256 KB
03_rndhardsmall_04.txt AC 1 ms 256 KB
03_rndhardsmall_05.txt AC 1 ms 256 KB
03_rndhardsmall_06.txt AC 1 ms 256 KB
03_rndhardsmall_07.txt AC 1 ms 256 KB
03_rndhardsmall_08.txt AC 1 ms 256 KB
03_rndhardsmall_09.txt AC 1 ms 256 KB