Consider an undirected graph G = (V,E), in which each node u 2 V may be colored
with some color between 1 and C. Your task is to write a program that determine the colors
for the uncolored nodes in the graph such that
• For all edges (u, v) 2 E, u and v have different colors.
• The number of additional colors needed is minimum.
Input (Standard input): Includes multiples lines. The first line contains two integers
1 n 1000, 1 m 100000 that correspond to the number of nodes and edges,
respectively.
Each of the following m lines contain two integers u and v, separated by one space,
to denote an edge from u to v. Nodes are numbered from 1 to n.
The last line contains n integers that are the colors of the nodes. Uncolored nodes
are indicated with color 0.
Output (Standard output): The first line contains an integer 0 D n that is the
number of additional colors needed to color all the uncolored nodes in the graph.
The next line contains n positive integers that are colors of the nodes.
Your program in Java/C++ that solves the above problem following the above input/
output format. A makefile and/or compiling instruction should be included if
you have multiple source files. Your program should not take more than 2 minutes to
terminate on any graph within the limits described in the Input section.
II. A report outline the numbers of colors used by your program on random graphs
assuming no nodes have any color at the beginning. The report should have at least
INSERT SHORTTITLE COMMAND IN PREAMBLE
A sudoku puzzle that is equivalent to an instance of our super graph coloring
with 81 nodes
two parts. Run your program for graphs of sizes 50, 100,..., 500 and report both the
number of used colors and the maximum degree.