public class Main
{
int n;
int m;
int[] vcolor;
public static void main(String[] args)
{
Main col = new Main();
col.vcolor = new int[10];
int[][] G = {
{0,1,0,0,0,1},
{1,0,1,0,1,0},
{0,1,0,1,0,0},
{0,0,1,0,1,0},
{0,1,0,1,0,1},
{1,0,0,0,1,0},
};
col.n = 6;
col.m = 3;
col.m_coloring(G, 0);
}
public void m_coloring(int[][] G, int i)
{
int color;
if (valid(G, i))
{
if (i == n)
{
System.out.print(" 색칠하기: ");
for (i=1; i<=n; i++)
{
System.out.print("정점 " + i + "의 색 = " + vcolor[i] + ", ");
}
System.out.println();
return;
}
else
{
for (color = 1; color <= m; color++)
{
vcolor[i+1] = color;
m_coloring(G, i+1);
}
}
}
}
public boolean valid(int[][] G, int i)
{
int j = 1;
while (j<i)
{
if (G[i-1][j-1] == 1 && vcolor[i] == vcolor[j])
{
return false;
}
j++;
}
return true;
}
}