- #include<stdio.h>
- #include<stdlib.h>
- int f(int);
- int N,M,i,j,array[400][400],k=-1,brray[80000],h,r,l,t,p,c,v;
- int main(void)
- {
- scanf("%d %d",&N,&M);
- for(i=0;i<N;i++)
- {
- for(j=0;j<M;j++)
- scanf("%d",&array[i][j]);
- }
- for(i=0;i<N;i++)
- {
- for(j=0;j<M;j++)
- { if(f(array[i][j])>0)
- {
- k++;
- brray[k]=f(array[i][j]);
- }
- } }
- for (h=0;h<k;h++)//Bubble Sort
- {
- r = h;
- for (l=h+1; l < k+1; l++)
- {
- if (brray[l] < brray[r])
- { r = l; }
- }
- t = brray[r];
- brray[r] = brray[h];
- brray[h] = t;
- }
- for(p=k;p>=0;p--)
- printf("%d\n",brray[k]);
- system("pause");
- }
- int f(int crray[400][400])
- {
- if(crray[c][v]==1&&0<=c<=N-1&&0<=v<=M-1)
- {
- crray[c][v]=2;
- return (1+f(crray[c-1][v])+f(crray[c+1][v])+f(crray[c][v-1])+f(crray[c][v+1]));
- }
- else
- return 0;
- }
Raw Paste