@@ -0,0 +1,1005 @@
+Dado un grafo implicito colorea y cuenta el tama%C3%B1o de las componentes conexas. Normalmente usado en rejillas 2D.%0A%0A//aka Coloring the connected components%0A%0A%09static int tam = 1000; //M%C3%A1ximo tama%C3%B1o de la rejilla%0A%09static int dy%5B%5D = %7B1,1,0,-1,-1,-1, 0, 1%7D; //Estructura auxiliar para los desplazamientos%0A%09static int dx%5B%5D = %7B0,1,1, 1, 0,-1,-1,-1%7D;%0A%09static char grid%5B%5D%5B%5D = new char %5Btam%5D%5Btam%5D; //Matriz de caracteres%0A%09static int X, Y; //Tama%C3%B1o de la matriz%0A%09%0A%09/*Este m%C3%A9todo debe ser llamado con las coordenadas x, y donde se inicia el %0A%09recorrido. c1 es el color que estoy buscando, c2 el color con el que se va %0A%09a pintar. Retorna el tama%C3%B1o de la componente conexa*/%0A%09static int floodfill(int y, int x, char c1, char c2) %7B %0A%09%09if (y %3C 0 %7C%7C y %3E= Y %7C%7C x %3C 0 %7C%7C x %3E= X) return 0;%0A%09%09%0A%09%09if (grid%5By%5D%5Bx%5D != c1) return 0; // base case%0A%09%09%0A%09%09int ans = 1; %0A%09%09grid%5By%5D%5Bx%5D = c2; // se cambia el color para prevenir ciclos%0A%09%09%0A%09%09for (int i = 0; i %3C 8; i++)%0A%09%09%09ans += floodfill(y + dy%5Bi%5D, x + dx%5Bi%5D, c1, c2);%0A%09%09%0A%09%09return ans;%0A%09%7D%0A

Add Floodfill Java