Graph Coloring
JAVA Code
/*To implement graph colouring*/
import java.io.*;
class graph_colour
{
void colournext(int k,int colour[],int n,int m,int edge[][])
{
int flag=0,j;
do
{
flag=0;
colour[k]=(colour[k]+1)%(m+1);
if(colour[k]==0)
return;
for(j=0;j<n;j++)
{
if((edge[k][j]==1) && (colour[k]==colour[j]))
flag=1;
}
}while(flag==1);
}
public static void main(String args[]) throws IOException
{
int i,t,j,h,n,m,k,flag=0,maxclique=0;
System.out.println("Enter the no. of vertices in the graph");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n=Integer.parseInt(br.readLine());
graph_colour g=new graph_colour();
int edge[][]=new int[n][n];
int colour[]=new int[n];
for(i=0;i<n;i++)
colour[i]=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
edge[i][j]=0;
}
for(i=0;i<n;i++)
{
t=0;
System.out.println("enter number of adjacent nodes from node "+i);
t=Integer.parseInt(br.readLine());
if(t>maxclique)
maxclique=t;
System.out.println("enter those adjacent nodes");
for(j=0;j<t;j++)
{
h=Integer.parseInt(br.readLine());
edge[i][h]=1;
}
}
m=maxclique;
k=0;
do
{
g.colournext(k,colour,n,m,edge);
if(colour[k]==0)
{k--;colour[k]=colour[k+1]%(m+1);}
else
k++;
}
while( k<n);
System.out.println("\tnode\tcolor no.");
for(i=0;i<n;i++)
{
System.out.println("\t"+i+"\t "+colour[i]);
}
}
}