Created
July 14, 2020 02:13
-
-
Save PedroRacchetti/e923c8855fd9c866dacecb2223fb218e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<bits/stdc++.h> | |
using namespace std; | |
int orig[512][512]; //matriz original, dada na entrada. | |
int dx[5] = {1, 0, -1, 0}; | |
int dy[5] = {0, 1, 0, -1}; //vetores de auxílio, que servirão como | |
//arestas no grafo. | |
int n, f; | |
void dfs(int i, int j){ | |
orig[i][j] = 100; | |
//definimos a posição i j como 100, valor absurdo | |
//para que, no momento de saída, se reconheca o fato que é de fato uma | |
//posição atingida pela lava | |
for(int k = 0; k < 4; k++){ | |
int ii = i + dx[k]; | |
int jj = j + dy[k]; | |
if(ii <= 0 || ii > n || jj <= 0 || j > n) continue; | |
if(orig[ii][jj] > f) continue; | |
dfs(ii, jj); | |
} | |
} | |
int main(){ | |
scanf("%d %d", &n, &f); | |
for(int i = 1; i <= n; i++){ | |
for(int j = 1; j <= n; j++){ | |
char c; | |
scanf(" %c", &c); | |
//lemos cada posição como um caractér, e depois os transformamos | |
//em um inteiro | |
int k = c - '0'; | |
orig[i][j] = k; | |
} | |
} | |
if(orig[1][1] <= f){ | |
dfs(1, 1); | |
//se a posicao inicial tiver altitude menor que a forca, iniciamos a DFS | |
} | |
for(int i = 1; i <= n; i++){ | |
for(int j = 1; j <= n; j++){ | |
if(orig[i][j] > 9){ | |
//todos os poontos atingidos estao marcados como 100 | |
printf("*"); | |
}else{ | |
printf("%d",orig[i][j]); | |
} | |
} | |
printf("\n"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment