Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- ifstream f("lac.in");
- ofstream g("lac.out");
- int n,m,i,j,a[1001][1001],nri,nrp;
- int ic,sc,coada[2][1000001];
- int dx[]={-1,0,1,0};
- int dy[]={0,1,0,-1};
- void fill1(int x,int y)
- {
- int i;
- ic=1;
- sc=1;
- coada[0][1]=x;
- coada[1][1]=y;
- a[x][y]=0;
- while(ic<=sc)
- {
- for(i=0;i<=3;i++)
- if(a[coada[0][ic]+dx[i]][coada[1][ic]+dy[i]]==1)
- {
- sc++;
- coada[0][sc]=coada[0][ic]+dx[i];
- coada[1][sc]=coada[1][ic]+dy[i];
- a[coada[0][ic]+dx[i]][coada[1][ic]+dy[i]]=0;
- }
- ic++;
- }
- }
- int main()
- {
- f>>n>>m;
- for(i=1;i<=n;i++)
- for(j=1;j<=m;j++)
- f>>a[i][j];
- for(i=1;i<=n;i++)
- if(a[i][1]==1)
- {
- nrp++;
- fill1(i,1);
- }
- for(i=1;i<=n;i++)
- if(a[i][m]==1)
- {
- nrp++;
- fill1(i,m);
- }
- for(j=1;j<=m;j++)
- if(a[1][j]==1)
- {
- nrp++;
- fill1(1,j);
- }
- for(j=1;j<=m;j++)
- if(a[n][j]==1)
- {
- nrp++;
- fill1(n,j);
- }
- for(i=2;i<=n-1;i++)
- for(j=1;j<=m-1;j++)
- if(a[i][j]==1)
- {
- nri++;
- fill1(i,j);
- }
- g<<nri<<' '<<nrp;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement