Submission #36245749


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
typedef pair<int, int> pii;
typedef map<int, int> mii;
typedef map<string, int> msi;
typedef map<string, string> mss;
typedef vector<int> vi;
typedef vector<long long int> vlli;
typedef vector<bool> vb;
typedef vector<string> vs;
typedef vector<pair<int, int>> vpii;
typedef vector<vector<int>> vvi;
typedef vector<vector<long long int>> vvlli;
typedef vector<vector<bool>> vvb;

#define endl "\n"
#define line cout<<"\n" 
#define pb push_back
#define all(v) v.begin(),v.end() 

#define mod7 1000000007
#define mod9 1000000009
#define modd 998244353

#define out0(x) cout<<(x)<<" " 
#define out1(x) cout<<(x)<<endl 
#define out2(x,y) cout<<(x)<<" "<<(y)<<endl 

#define trace1(x)       if(dm) cout<<(#x)<<" "<<(x)<<endl
#define trace2(x,y)     if(dm) cout<<(#x)<<" "<<(x)<<", "<<(#y)<<" "<<(y)<<endl
#define trace3(x,y,z)   if(dm) cout<<(#x)<<" "<<(x)<<", "<<(#y)<<" "<<(y)<<", "<<(#z)<<" "<<(z)<<endl

#define in1(x)          cin>>(x)
#define in2(x,y)        cin>>(x)>>(y)
#define in3(x,y,z)      cin>>(x)>>(y)>>(z)
#define in4(x,y,z,w)    cin>>(x)>>(y)>>(z)>>(w)

#define ins(x) string x;cin>>x
#define ini(x) int x;cin>>x
#define inii(x,y) int x,y;cin>>x>>y
#define inlli(x) long long int x;cin>>x
#define invi(v,n) vector<int>v(n);for(int i=0;i<n;i++)cin>>v[i]
#define invs(v,n) vector<string>v(n);for(int i=0;i<n;i++)cin>>v[i]
#define invlli(v,n) vector<long long int>v(n);for(int i=0;i<n;i++)cin>>v[i]

#define rep(i,st,end)   for(int i=st; i<=end; i++) 
#define rrep(i,st,end)  for(int i=st; i>=end; i--)
template<typename T>
vector<T> inpv(int sz){
    vector<T> res(sz);
    for(T& i : res) cin>> i;
    return res;
}
template <typename T> void outv      (const vector<T> &vec) { 
    for(int i=0; i<vec.size(); i++) cout << vec[i] << " " ;
    cout << endl ;
}
template <typename T> inline lli sumv      (const vector<T> &vec) { 
    lli res=0;
    for(int i=0; i<vec.size(); i++) res +=vec[i] ;
    return res;
}
template <typename T> inline int maxindv      (const vector<T> &vec) { 
    return max_element(vec.begin(), vec.end()) - vec.begin();
}
template <typename T> inline int minindv      (const vector<T> &vec) { 
    return min_element(vec.begin(), vec.end()) - vec.begin();
}
template <typename T> inline void sortv        (vector<T> &vec)            { sort(vec.begin(), vec.end() ) ; }
template <typename T> inline void rsortv       (vector<T> &vec)            { sort(vec.begin(), vec.end(), greater<T>()) ; }
template<class T>
vector<lli> get_presum(const vector<T>& vec){
    vector<lli> presum(vec.size()+1,0);
    for(int i=1; i<=vec.size(); i++) presum[i] = presum[i-1] + vec[i-1] ;
    return presum;
}
template<class T>
map<T, int> get_freq(const vector<T>& vec){
    map<T, int> freq;
    for(T i : vec) freq[i]++;
    return freq;
}
const vector<pair<int, int>> diff4 = {{-1, 0}, {1,0}, {0,1}, {0,-1}};
const vector<pair<int, int>> diff8 = {{-1, 0}, {1,0}, {0,1}, {0,-1}, {-1, 1}, {1,1}, {1,-1}, {-1,-1}};
bool grid_val_check(int i, int j, int m, int n){ return i>=0 && j>=0 && i<m && j<n ; }

int dm = 0;
void fastio(){ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);}
void fileio() {
	#ifndef ONLINE_JUDGE
		freopen("input.txt", "r", stdin);
		//freopen("output.txt", "w", stdout);
	#endif
}

void solve(){
    inii(n,m);

    vs grid(n);
    int si,sj;

    for(int i=0; i<n; i++){
        cin>>grid[i];
        for(int j=0; j<m; j++){
            if(grid[i][j] == 'S'){
                si = i;
                sj = j;
            }
        }
    }

    vvi color(n, vi(m, -1));

    auto check = [&](int i, int j){
        return i>=0 && j>=0 && i<n && j<m;
    };

    queue<pii> bfs;

    color[si][sj] = 0;
    for(int dir = 1; dir<=4; dir++){
        int x = si + diff4[dir-1].first;
        int y = sj + diff4[dir-1].second;

        if(check(x,y) && grid[x][y]!='#'){
            color[x][y] = dir;
            bfs.push({x,y});
        }

    }

    string ans = "No";


    while(!bfs.empty()){
        int x = bfs.front().first;
        int y = bfs.front().second;
        bfs.pop();

        for(pii dir : diff4){
            int i = x + dir.first;
            int j = y + dir.second;
            if(check(i,j) && grid[i][j] == '.'){
                if(color[i][j] == -1){
                    color[i][j] = color[x][y];
                    bfs.push({i,j});
                }
                else if(color[i][j] != color[x][y]){
                    ans = "Yes";
                }
            }
        }
    }

    cout << ans << endl;







}

int main(){
    #ifndef ONLINE_JUDGE
        dm = 1;
        clock_t clock_begin = clock();
	#endif
    if(!dm)fastio();
    fileio();

    lli tst=1;
    //cin>>tst ;
    for(int t=1; t<=tst; t++){
        solve();
    }

    #ifndef ONLINE_JUDGE
        clock_t clock_end = clock();
        //cout<<"Executed In : "<<double(clock_end-clock_begin)/CLOCKS_PER_SEC*1000<<" ms";
	#endif
    return 0 ;
}

Submission Info

Submission Time
Task E - Round Trip
User nk12384
Language C++ (GCC 9.2.1)
Score 500
Code Size 5154 Byte
Status AC
Exec Time 43 ms
Memory 10224 KiB

Compile Error

./Main.cpp: In function ‘void solve()’:
./Main.cpp:124:20: warning: ‘sj’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  124 |         int y = sj + diff4[dir-1].second;
      |                 ~~~^~~~~~~~~~~~~~~~~~~~~
./Main.cpp:123:20: warning: ‘si’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  123 |         int x = si + diff4[dir-1].first;
      |                 ~~~^~~~~~~~~~~~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 3
AC × 25
Set Name Test Cases
Sample example_00.txt, example_01.txt, example_02.txt
All example_00.txt, example_01.txt, example_02.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt
Case Name Status Exec Time Memory
example_00.txt AC 5 ms 3608 KiB
example_01.txt AC 2 ms 3468 KiB
example_02.txt AC 1 ms 3588 KiB
test_00.txt AC 9 ms 8784 KiB
test_01.txt AC 8 ms 8084 KiB
test_02.txt AC 13 ms 8484 KiB
test_03.txt AC 9 ms 8076 KiB
test_04.txt AC 11 ms 8792 KiB
test_05.txt AC 7 ms 8168 KiB
test_06.txt AC 8 ms 8040 KiB
test_07.txt AC 11 ms 8864 KiB
test_08.txt AC 2 ms 3540 KiB
test_09.txt AC 2 ms 3480 KiB
test_10.txt AC 2 ms 3592 KiB
test_11.txt AC 43 ms 10224 KiB
test_12.txt AC 23 ms 8352 KiB
test_13.txt AC 20 ms 8640 KiB
test_14.txt AC 11 ms 6556 KiB
test_15.txt AC 7 ms 5140 KiB
test_16.txt AC 7 ms 5752 KiB
test_17.txt AC 10 ms 7092 KiB
test_18.txt AC 11 ms 5744 KiB
test_19.txt AC 7 ms 5248 KiB
test_20.txt AC 9 ms 6320 KiB
test_21.txt AC 9 ms 6984 KiB