Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- const int N = 50;
- int vis[N][N];
- char graph[N][N];
- int n;
- int ii[8] = {1, 1, 1, 0, 0, -1, -1, -1};
- int jj[8] = {-1, 1, 0, -1, 1, 0, 1, -1};
- bool movimento_valido(int i, int j){
- return ((i > 0) && (j > 0) && (i <= n) && (j <= n));
- }
- void DFS(int i, int j){
- vis[i][j] = 1;
- for(int k = 0; k<8; k++){
- int movi = i + ii[k]; //novo movimento em i
- int movj = j + jj[k]; //novo movimento em j
- if(movimento_valido(movi, movj)){
- if(vis[movi][movj] == 0 && graph[movi][movj] == '1') DFS(movi, movj);
- }
- }
- }
- int main(){
- int ans = 0, cnt = 0;
- while(cin >> n){
- cnt++;
- for(int i = 1; i <= n; i++){
- for(int j = 1; j <= n; j++){
- cin >> graph[i][j];
- }
- }
- for(int i = 1; i <= n; i++){
- for(int j = 1; j <= n; j++){
- if(graph[i][j] == '1' && vis[i][j] == 0){
- DFS(i, j);
- ans++;
- }
- }
- }
- cout << "Image number " << cnt << " contains " << ans << " war eagles."<< endl;
- ans = 0;
- memset(vis, 0, sizeof(vis));
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement