Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <stack>
- using namespace std;
- stack <pair <int, int> > t;
- int a[1000][1000];
- int Fill(int i, int j)
- {
- t.push(make_pair(i, j));
- int cnt = 0;
- while(!t.empty())
- {
- i = t.top().first;
- j = t.top().second;
- t.pop();
- a[i][j] = 0;
- cnt++;
- if(a[i + 1][j] == 1)
- t.push(make_pair(i + 1, j));
- if(a[i - 1][j] == 1)
- t.push(make_pair(i - 1, j));
- if(a[i][j + 1] == 1)
- t.push(make_pair(i, j + 1));
- if(a[i][j - 1] == 1)
- t.push(make_pair(i, j - 1));
- }
- return cnt;
- }
- int main()
- {
- int i, j, l, c, nrob, obmax, x;
- ifstream fin("date.in");
- fin >> l >> c;
- for(i = 1; i <= l; i++)
- for(j = 1; j <= c; j++)
- fin >> a[i][j];
- fin.close();
- nrob = obmax = 0;
- for(i = 1; i <= l; i++)
- {
- for(j = 1; j <= c; j++)
- {
- if(a[i][j] == 1)
- {
- nrob++;
- x = Fill(i, j);
- obmax = max(obmax, x);
- }
- }
- }
- cout << nrob;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment