Skip to content

Commit 7b689c3

Browse files
committed
aceito
1 parent 5b1c400 commit 7b689c3

File tree

3 files changed

+101
-51
lines changed

3 files changed

+101
-51
lines changed

Exercicios/FissuraPerigosa.cpp

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
int orig[512][512]; //matriz original, dada na entrada.
5+
6+
int dx[5] = {1, 0, -1, 0};
7+
int dy[5] = {0, 1, 0, -1}; //vetores de auxílio, que servirão como
8+
//arestas no grafo.
9+
10+
int n, f;
11+
12+
void dfs(int i, int j){
13+
14+
orig[i][j] = 100;
15+
//definimos a posição i j como 100, valor absurdo
16+
//para que, no momento de saída, se reconheca o fato que é de fato uma
17+
//posição atingida pela lava
18+
for(int k = 0; k < 4; k++){
19+
int ii = i + dx[k];
20+
int jj = j + dy[k];
21+
if(ii <= 0 || ii > n || jj <= 0 || j > n) continue;
22+
if(orig[ii][jj] > f) continue;
23+
dfs(ii, jj);
24+
}
25+
}
26+
27+
28+
int main(){
29+
30+
cin >> n >> f;
31+
for(int i = 1; i <= n; i++){
32+
for(int j = 1; j <= n; j++){
33+
char c;
34+
cin >> c;
35+
//lemos cada posição como um caractér, e depois os transformamos
36+
//em um inteiro
37+
int k = c - '0';
38+
orig[i][j] = k;
39+
}
40+
}
41+
if(orig[1][1] <= f){
42+
dfs(1, 1);
43+
//se a posicao inicial tiver altitude menor que a forca, iniciamos a DFS
44+
}
45+
for(int i = 1; i <= n; i++){
46+
for(int j = 1; j <= n; j++){
47+
if(orig[i][j] > 9){
48+
//todos os poontos atingidos estao marcados como 100
49+
cout << "*";
50+
}else{
51+
cout << orig[i][j];
52+
}
53+
}
54+
cout << endl;
55+
}
56+
57+
}

Exercicios/fissura perigosa.cpp

Lines changed: 0 additions & 51 deletions
This file was deleted.

Exercicios/pandemia.cpp

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
int marc[1123]; // o vetor de marcação
5+
vector<int> reuniao[1123];
6+
int n, m, I, R;
7+
8+
int main() {
9+
cin >> n >> m;
10+
cin >> I >> R;
11+
12+
marc[I] = 1;
13+
for (int i = 1; i <= m; i++) {
14+
int k;
15+
cin >> k;
16+
for (int j = 0; j < k; j++) {
17+
int x;
18+
cin >> x;
19+
reuniao[i].push_back(x);
20+
// armazenamos todas as reuniões
21+
}
22+
}
23+
24+
for (int i = R; i <= m; i++) {
25+
int ok = 0;
26+
for (int j = 0; j < reuniao[i].size(); j++) {
27+
if (marc[reuniao[i][j]]) ok = 1;
28+
// verificamos se existe algum infectado nesta reunião
29+
}
30+
31+
if (!ok) continue;
32+
for (int j = 0; j < reuniao[i].size(); j++) {
33+
marc[reuniao[i][j]] = 1;
34+
//se houver algum infectado, marcamos também todos os outros
35+
}
36+
37+
}
38+
int ans = 0;
39+
for (int i = 1; i <= n; i++) {
40+
if (marc[i]) ans++;
41+
}
42+
cout << ans << endl;
43+
44+
}

0 commit comments

Comments
 (0)