Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define VIS -1
- using namespace std;
- vector<vector<int> > grafo;
- vector<pair<int, int> > mov;
- int n, m;
- void bfs(pair<int, int> dois){
- int res = 0;
- pair<int, int> atual, aux;
- queue<pair<int, int> > fila;
- fila.push(dois);
- while(!fila.empty()){
- atual = fila.front();
- fila.pop();
- res++;
- if(grafo[atual.first][atual.second] == 2)
- break;
- for(int i = 0; i < mov.size(); i++){
- aux = make_pair(atual.first + mov[i].first, atual.second + mov[i].second);
- if(aux.first >= 0 && aux.first < n && aux.second >= 0 && aux.second < m){
- if(grafo[aux.first][aux.second] == 1 || grafo[aux.first][aux.second] == 2){
- fila.push(aux);
- if(grafo[aux.first][aux.second] == 1)
- grafo[aux.first][aux.second] = VIS;
- }
- }
- }
- }
- printf("%d\n", res);
- }
- int main(){
- int aux;
- pair<int, int> dois;
- mov.push_back(make_pair(-1, 0));
- mov.push_back(make_pair(0, 1));
- mov.push_back(make_pair(1, 0));
- mov.push_back(make_pair(0, -1));
- scanf("%d %d", &n, &m);
- grafo.assign(n, vector<int>(m, 0));
- for(int i = 0; i < n; i++){
- for(int j = 0; j < m; j++){
- scanf("%d", &aux);
- grafo[i][j] = aux;
- if(aux == 3)
- dois = make_pair(i, j);
- }
- }
- bfs(dois);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement