#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i,j,k,n,l,i2,j2,sitio,groupn,p,sitioperco,npercol; // Definção de variaveis
srand(time(NULL)); //Comando utilizado para ser realmente randomico
k = 2; //Numero do grupo
npercol = 0;
sitioperco = 0;
p = 600; //Probabilidade de ser verdadeiro
sitio = 0; //Numero de sitios ocupado
n = 6; // tamanho da matriz quadrada
int matriz[n+1][n+1]; // Definição da matriz quadrada
for (i=0;i<n;i++) //mudar as linhas
for (j=0;j<n;j++) //mudar as colunas
{
matriz[i][j] = rand() % 1001; //Alimentando a matriz com os numeros aleatorios
if(matriz[i][j] < p) //Vendo se surgira uma passagem ou não
{
matriz[i][j] = 1; //Tem um sitio ocupado
}
else
matriz [i][j] = 0; //Não tem sitio ocupado
}
matriz [0][0] = 0;
for (j=0;j<n+1;j++){
matriz [j][n+1] = 0;
}
for (j=0;j<n+1;j++){
matriz [n+1][j] = 0;
}
for (i=1;i<n;i++){
for (j=1;j<n;j++){
if (matriz [i][j] == 1)
{
sitio = sitio +1;
}
}
}
printf("numero de sitios ocupados:%.2d\n",sitio); // imprime o numero de sitios ocupados
k = 1;
/* for (i=0;i<n+1;i++){
for (j=0;j<n+1;j++)
{
printf ("(%d)",matriz[i][j]);
}
printf("\n");
} */
for (i=1;i<n+1;i++){
for (j=1;j<n+1;j++){
if (matriz [i][j] == 1)
{
matriz [i][j] = k;
}
/* if (matriz [0][j] == 1){
matriz [0][j] = k+1;
}*/
else{
k = k+1;
matriz [i][j] = 0;
}
}
}
/* printf(" \n matriz \n");
for (i=1;i<n;i++){
for(j=1;j<n;j++){
printf ("(%d)",matriz[i][j]);
}
printf ("\n");
}
printf ("nova matriz \n"); */
for (i=1;i<n;i++){
for(j=1;j<n;j++){
if (matriz [i][j] != 0 && matriz [i+1][j] != 0){ // ta certo;(troca os numeros para baixo)
for(i2=0;i2<n;i2++){
for(j2=0;j2<n;j2++){
if(matriz [i2][j2] == matriz [i+1][j]){
matriz [i2][j2] = matriz [i][j];
matriz [i+1][j] = matriz [i][j];
}
}
}
}
}
}
/* for (i=1;i<n;i++){
for (j=1;j<n;j++)
{
printf ("(%d)",matriz[i][j]);
}
printf("\n");
} */
for (j=1;j<n;j++){ // troca os numeros para direita
for(i=1;i<n;i++){
if (matriz [i][j] != 0 && matriz [i][j+1] != 0){
for(i2=0;i2<n;i2++){
for(j2=0;j2<n;j2++){
if(matriz [i2][j2] == matriz [i][j+1]){
matriz [i2][j2] = matriz [i][j];
matriz [i][j+1] = matriz [i][j];
}
}
}
}
}
}
/*printf ("\n pos primeira mudança \n");
for (i=1;i<n;i++){
for(j=1;j<n;j++){
printf("(%d)",matriz[i][j]);
}
printf ("\n");
} */
for (i=1;i<n;i++){
for(j=1;j<n;j++){
if (matriz [i][j] != 0 && matriz [i+1][j] != 0){ // ta certo;(troca os numeros para baixo)
for(i2=0;i2<n;i2++){
for(j2=0;j2<n;j2++){
if(matriz [i2][j2] == matriz [i+1][j]){
matriz [i2][j2] = matriz [i][j];
matriz [i+1][j] = matriz [i][j];
}
}
}
}
}
}
for (j=1;j<n;j++){ // troca os numeros para direita
for(i=1;i<n;i++){
if (matriz [i][j] != 0 && matriz [i][j+1] != 0){
for(i2=0;i2<n;i2++){
for(j2=0;j2<n;j2++){
if(matriz [i2][j2] == matriz [i][j+1]){
matriz [i2][j2] = matriz [i][j];
matriz [i][j+1] = matriz [i][j];
}
}
}
}
}
}
printf ("\n pos primeira mudança \n");
for (i=1;i<n;i++){
for(j=1;j<n;j++){
printf("(%d)",matriz[i][j]);
}
printf ("\n");
}
groupn = 0;
for (l=1;l<k;l++){
for (i=1;i<n;i++){
for (j=1;j<n;j++){
if((matriz [1][i] == l) && (matriz [n-1][j] == l)){
groupn = l;
}
if ((matriz [i][1] == l) && (matriz [j][n-1] == l)){
groupn = l;
}
}
}
if (groupn == l){
for (i2=1;i2<n;i2++){
for (j2=1;j2<n;j2++){
if (matriz[i2][j2] == groupn){
sitioperco = sitioperco +1;
}
}
}
}}
printf("\n %d",groupn);
if (groupn !=0 ){
npercol = npercol +1;
}
printf ("\n %d",npercol);
printf ("\n %d",sitioperco);
return 0;
}