Programming Assignment 2 Sample

Data:

8
0 0 1 0 0 0 0 0
0 0 0 1 0 1 0 1
1 0 0 0 1 0 0 0
0 1 0 0 0 1 0 1
0 0 1 0 0 0 1 0
0 1 0 1 0 0 0 1
0 0 0 0 1 0 0 0
0 1 0 1 0 1 0 0

Corresponding graph:

0 -- 2 -- 4 -- 6

1 --- 3  
| \ / |
| / \ |
7 --- 5

How algorithm runs:

Read in graph data:
  Read number of vertices (8)
  For row 0
    For col 0 read in edge value (0) - no edge from 0 to 0
    For col 1 read in edge value (0) - no edge from 0 to 1
    For col 2 read in edge value (1) - EDGE from 0 to 2
    For col 3 read in edge value (0) - no edge from 0 to 3
    For col 4 read in edge value (0) - no edge from 0 to 4
    For col 5 read in edge value (0) - no edge from 0 to 5
    For col 6 read in edge value (0) - no edge from 0 to 6
    For col 7 read in edge value (0) - no edge from 0 to 7
  For row 1
    For col 0 read in edge value (0) - no edge from 1 to 0
    For col 1 read in edge value (0) - no edge from 1 to 1
    For col 2 read in edge value (0) - no edge from 1 to 2
    For col 3 read in edge value (1) - EDGE from 1 to 3
    For col 4 read in edge value (0) - no edge from 1 to 4
    For col 5 read in edge value (1) - EDGE from 1 to 5
    For col 6 read in edge value (0) - no edge from 1 to 6
    For col 7 read in edge value (1) - EDGE from 1 to 7
  For row 2
    For col 0 read in edge value (1) - EDGE from 2 to 0
    For col 1 read in edge value (0) - no edge from 2 to 1
    For col 2 read in edge value (0) - no edge from 2 to 2
    For col 3 read in edge value (0) - no edge from 2 to 3
    For col 4 read in edge value (1) - EDGE from 2 to 4
    For col 5 read in edge value (0) - no edge from 2 to 5
    For col 6 read in edge value (0) - no edge from 2 to 6
    For col 7 read in edge value (0) - no edge from 2 to 7
  For row 3
    For col 0 read in edge value (0) - no edge from 3 to 0
    For col 1 read in edge value (1) - EDGE from 3 to 1
    For col 2 read in edge value (0) - no edge from 3 to 2
    For col 3 read in edge value (0) - no edge from 3 to 3
    For col 4 read in edge value (0) - no edge from 3 to 4
    For col 5 read in edge value (1) - EDGE from 3 to 5
    For col 6 read in edge value (0) - no edge from 3 to 6
    For col 7 read in edge value (1) - EDGE from 3 to 7
  For row 4
    For col 0 read in edge value (0) - no edge from 4 to 0
    For col 1 read in edge value (0) - no edge from 4 to 1
    For col 2 read in edge value (1) - EDGE from 4 to 2
    For col 3 read in edge value (0) - no edge from 4 to 3
    For col 4 read in edge value (0) - no edge from 4 to 4
    For col 5 read in edge value (0) - no edge from 4 to 5
    For col 6 read in edge value (1) - EDGE from 4 to 6
    For col 7 read in edge value (0) - no edge from 4 to 7
  For row 5
    For col 0 read in edge value (0) - no edge from 5 to 0
    For col 1 read in edge value (1) - EDGE from 5 to 1
    For col 2 read in edge value (0) - no edge from 5 to 2
    For col 3 read in edge value (1) - EDGE from 5 to 3
    For col 4 read in edge value (0) - no edge from 5 to 4
    For col 5 read in edge value (0) - no edge from 5 to 5
    For col 6 read in edge value (0) - no edge from 5 to 6
    For col 7 read in edge value (1) - EDGE from 5 to 7
  For row 6
    For col 0 read in edge value (0) - no edge from 6 to 0
    For col 1 read in edge value (0) - no edge from 6 to 1
    For col 2 read in edge value (0) - no edge from 6 to 2
    For col 3 read in edge value (0) - no edge from 6 to 3
    For col 4 read in edge value (1) - EDGE from 6 to 4
    For col 5 read in edge value (0) - no edge from 6 to 5
    For col 6 read in edge value (0) - no edge from 6 to 6
    For col 7 read in edge value (0) - no edge from 6 to 7
  For row 7
    For col 0 read in edge value (0) - no edge from 7 to 0
    For col 1 read in edge value (1) - EDGE from 7 to 1
    For col 2 read in edge value (0) - no edge from 7 to 2
    For col 3 read in edge value (1) - EDGE from 7 to 3
    For col 4 read in edge value (0) - no edge from 7 to 4
    For col 5 read in edge value (1) - EDGE from 7 to 5
    For col 6 read in edge value (0) - no edge from 7 to 6
    For col 7 read in edge value (0) - no edge from 0 to 7

Number of components seen so far (C) = 0

Mark all vertices not visited
  Mark vertex 0 not visited
  Mark vertex 1 not visited
  Mark vertex 2 not visited
  Mark vertex 3 not visited
  Mark vertex 4 not visited
  Mark vertex 5 not visited
  Mark vertex 6 not visited
  Mark vertex 7 not visited

For each vertex in graph V
  For V=0
    is vertex V(0) not visited? (yes)
      increment C (to 1)
      Visit(V,C)  (Visit(W is 0,CompNum is 1))
	Mark vertex 0 as visited
	Set vertex 0's component number to 1
	For each vertex X where there is an edge from 0 to X
	  X=0, edge from 0 to 0? (no)
	  X=1, edge from 0 to 1? (no)
	  X=2, edge from 0 to 2? (yes)
	    is vertex 2 not visited? (yes)
	      Visit(X,CompNum)  (Visit(W is 2,CompNum is 1))
	        Mark vertex 2 as visited
	        Set vertex 2's component number to 1
	        For each vertex X where there is an edge from 2 to X
	          X=0, edge from 2 to 0? (yes)
		    is vertex 0 not visited? (no)
	          X=1, edge from 2 to 1? (no)
	          X=2, edge from 2 to 2? (no)
	          X=3, edge from 2 to 3? (no)
	          X=4, edge from 2 to 4? (yes)
	            is vertex 4 not visited? (yes)
	              Visit(X,CompNum)  (Visit(W is 4,CompNum is 1))
	                Mark vertex 4 as visited
	                Set vertex 4's component number to 1
	                For each vertex X where there is an edge from 4 to X
	                  X=0, edge from 4 to 0? (no)
	                  X=1, edge from 4 to 1? (no)
	                  X=2, edge from 4 to 2? (yes)
	                    is vertex 2 not visited? (no)
	                  X=3, edge from 4 to 3? (no)
	                  X=4, edge from 4 to 4? (no)
	                  X=5, edge from 4 to 5? (no)
	                  X=6, edge from 4 to 6? (yes)
	                    is vertex 6 not visited? (yes)
	                      Visit(X,CompNum)  (Visit(W is 6,CompNum is 1))
	                        Mark vertex 6 as visited
	                        Set vertex 6's component number to 1
	                        For each vertex X where there is an edge from 6 to X
	                          X=0, edge from 6 to 0? (no)
	                          X=1, edge from 6 to 1? (no)
	                          X=2, edge from 6 to 2? (no)
	                          X=3, edge from 6 to 3? (no)
	                          X=4, edge from 6 to 4? (yes)
	                            is vertex 2 not visited? (no)
	                          X=5, edge from 6 to 5? (no)
	                          X=6, edge from 6 to 6? (no)
	                          X=7, edge from 6 to 7? (no)
	                  X=7, edge from 4 to 7? (no)
	          X=5, edge from 2 to 5? (no)
	          X=6, edge from 2 to 6? (no)
	          X=7, edge from 2 to 7? (no)
	  X=3, edge from 0 to 3? (no)
	  X=4, edge from 0 to 4? (no)
	  X=5, edge from 0 to 5? (no)
	  X=6, edge from 0 to 6? (no)
	  X=7, edge from 0 to 7? (no)
  For V=1
    is vertex V(1) not visited? (yes)
      increment C (to 2)
      Visit(V,C)  (Visit(W is 1,CompNum is 2))
	Mark vertex 1 as visited
	Set vertex 1's component number to 2
	For each vertex X where there is an edge from 1 to X
	  X=0, edge from 1 to 0? (no)
	  X=1, edge from 1 to 1? (no)
	  X=2, edge from 1 to 2? (no)
	  X=3, edge from 1 to 3? (yes)
	    is vertex 3 not visited? (yes)
	      Visit(X,CompNum)  (Visit(W is 3,CompNum is 2))
	        Mark vertex 3 as visited
	        Set vertex 3's component number to 2
	        For each vertex X where there is an edge from 3 to X
	          X=0, edge from 3 to 0? (no)
	          X=1, edge from 3 to 1? (yes)
		    is vertex 1 not visited? (no)
	          X=2, edge from 3 to 2? (no)
	          X=3, edge from 3 to 3? (no)
	          X=4, edge from 3 to 4? (no)
	          X=5, edge from 3 to 5? (yes)
	            is vertex 5 not visited? (yes)
	              Visit(X,CompNum)  (Visit(W is 5,CompNum is 2))
	                Mark vertex 5 as visited
	                Set vertex 5's component number to 2
	                For each vertex X where there is an edge from 5 to X
	                  X=0, edge from 5 to 0? (no)
	                  X=1, edge from 5 to 1? (yes)
	                    is vertex 1 not visited? (no)
	                  X=2, edge from 5 to 2? (no)
	                  X=3, edge from 5 to 3? (yes)
	                    is vertex 3 not visited? (no)
	                  X=4, edge from 5 to 4? (no)
	                  X=5, edge from 5 to 5? (no)
	                  X=6, edge from 5 to 6? (no)
	                  X=7, edge from 5 to 7? (yes)
	                    is vertex 7 not visited? (yes)
	                      Visit(X,CompNum)  (Visit(W is 7,CompNum is 2))
	                        Mark vertex 7 as visited
	                        Set vertex 7's component number to 2
	                        For each vertex X where there is an edge from 7 to X
	                          X=0, edge from 7 to 0? (no)
	                          X=1, edge from 7 to 1? (yes)
	                            is vertex 1 not visited? (no)
	                          X=2, edge from 7 to 2? (no)
	                          X=3, edge from 7 to 3? (yes)
	                            is vertex 3 not visited? (no)
	                          X=4, edge from 7 to 4? (no)
	                          X=5, edge from 7 to 5? (yes)
	                            is vertex 5 not visited? (no)
	                          X=6, edge from 7 to 6? (no)
	                          X=7, edge from 7 to 7? (no)
	          X=6, edge from 3 to 6? (no)
	          X=7, edge from 3 to 7? (yes)
                    is vertex 7 not visited? (no)
	  X=4, edge from 1 to 4? (no)
	  X=5, edge from 1 to 5? (yes)
            is vertex 5 not visited? (no)
	  X=6, edge from 1 to 6? (no)
	  X=7, edge from 1 to 7? (yes)
            is vertex 7 not visited? (no)
  For V=2
    is vertex V(2) not visited? (no)
  For V=3
    is vertex V(3) not visited? (no)
  For V=4
    is vertex V(4) not visited? (no)
  For V=5
    is vertex V(5) not visited? (no)
  For V=6
    is vertex V(6) not visited? (no)
  For V=7
    is vertex V(7) not visited? (no)

For each component from 1 to C(2)
  For component 1
    Is vertex 0 part of component 1? (yes)
      print 0
    Is vertex 1 part of component 1? (no)
    Is vertex 2 part of component 1? (yes)
      print 2
    Is vertex 3 part of component 1? (no)
    Is vertex 4 part of component 1? (yes)
      print 4
    Is vertex 5 part of component 1? (no)
    Is vertex 6 part of component 1? (yes)
      print 6
    Is vertex 7 part of component 1? (no)
  For component 2
    Is vertex 0 part of component 2? (no)
    Is vertex 1 part of component 2? (yes)
      print 1
    Is vertex 2 part of component 2? (no)
    Is vertex 3 part of component 2? (yes)
      print 3
    Is vertex 4 part of component 2? (no)
    Is vertex 5 part of component 2? (yes)
      print 5
    Is vertex 6 part of component 2? (no)
    Is vertex 7 part of component 2? (yes)
      print 7