Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef pair<int, int> pii;
- typedef tuple<int, int, pii> tiip;
- const int N = 100;
- char board[N + 10][N + 10];
- int row, col;
- vector<vector<int>> dist;
- queue<tiip> que;
- bool isInBoard(int r, int c){
- return r >= 1 && r <= row && c >= 1 && c <= col;
- }
- bool findCycle(int ur, int uc, int vr, int vc, pii &par){
- if(dist[vr][vc] == -1){
- dist[vr][vc] = dist[ur][uc] + 1;
- que.emplace(vr, vc, pii(ur, uc));
- } else if(pii(vr, vc) != par){
- cout << dist[ur][uc] + 1 << '\n' << vr << ' ' << vc;
- return true;
- }
- return false;
- }
- int main(){
- scanf("%d%d", &row, &col);
- for(int i = 1; i <= row; ++i){
- for(int j = 1; j <= col; ++j){
- scanf(" %c", &board[i][j]);
- }
- }
- dist.assign(row + 1, vector<int>(col + 1, -1));
- dist[1][1] = 1;
- que.emplace(1, 1, pii(0, 0));
- while(!que.empty()){
- int ur = get<0>(que.front());
- int uc = get<1>(que.front());
- pii par = get<2>(que.front());
- que.pop();
- if(board[ur][uc] == 'D'){ // DOWN
- int vr = ur + 1;
- int vc = uc;
- if(isInBoard(vr, vc) && findCycle(ur, uc, vr, vc, par)){
- return 0;
- }
- } else if(board[ur][uc] == 'R'){ // RIGHT
- int vr = ur;
- int vc = uc + 1;
- if(isInBoard(vr, vc) && findCycle(ur, uc, vr, vc, par)){
- return 0;
- }
- } else if(board[ur][uc] == 'B'){
- // RIGHT
- int vr = ur;
- int vc = uc + 1;
- if(isInBoard(vr, vc) && findCycle(ur, uc, vr, vc, par)){
- return 0;
- }
- // DOWN
- vr = ur + 1;
- vc = uc;
- if(isInBoard(vr, vc) && findCycle(ur, uc, vr, vc, par)){
- return 0;
- }
- }
- // UP
- int vr = ur - 1;
- int vc = uc;
- if(isInBoard(vr, vc) && (board[vr][vc] == 'D' || board[vr][vc] == 'B') && findCycle(ur, uc, vr, vc, par)){
- return 0;
- }
- // LEFT
- vr = ur;
- vc = uc - 1;
- if(isInBoard(vr, vc) && (board[vr][vc] == 'R' || board[vr][vc] == 'B') && findCycle(ur, uc, vr, vc, par)){
- return 0;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement