Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_DEPRECATE
- #define _USE_MATH_DEFINES
- #include <cstdio>
- #include <iostream>
- #include <vector>
- #include <queue>
- #include <deque>
- #include <stack>
- #include <algorithm>
- #include <cmath>
- #include <map>
- #include <set>
- #include <ctime>
- #include <sstream>
- #include <numeric>
- #define sz(x) (int)(x).size()
- #define all(x) (x).begin(),(x).end()
- #define EPS 1e-9
- #define INF INT_MAX
- #define SQR(X) (X) * (X)
- #define round(x) (int)floor((x) + 0.5 + EPS)
- using namespace std;
- typedef pair <int, int> pii;
- typedef vector <int> vi;
- typedef vector <vi> vvi;
- typedef vector <pii> vpii;
- typedef vector <vpii> vvpii;
- typedef vector <string> vs;
- typedef unsigned int uint;
- const int N = 100;
- int a[N][N] = {0};
- int n, m;
- int dx[] = {0, 0, 1, -1};
- int dy[] = {1, -1, 0, 0};
- void DFS(int y, int x)
- {
- a[y][x] = 1;
- for (int i = 0; i < 4; i++)
- {
- int nx = x;
- int ny = y;
- nx += dx[i];
- ny += dy[i];
- if (nx < 0 || nx > m - 1) continue;
- if (ny < 0 || ny > n - 1) continue;
- if (a[ny][nx]) continue;
- DFS(ny, nx);
- }
- }
- int main()
- {
- #ifndef ONLINE_JUDGE
- freopen("d.in", "r", stdin);
- freopen("d.out", "w", stdout);
- #endif
- scanf("%d%d", &n, &m);
- for (int i = 0; i < n; i++)
- for (int j = 0; j < m; j++)
- scanf("%d", &a[i][j]);
- int res = 0;
- for (int i = 0; i < n; i++)
- for (int j = 0; j < m; j++)
- {
- if (a[i][j]) continue;
- DFS(i, j);
- res++;
- }
- printf("%d", res);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement