// File: /workspace/github_cpp_makefile_star2_O2/jkeys-ecg-nmsu[P]graph-with-search-algorithms/Debug.cpp
// Function: testall()
bool testall() {	
	Graph g;
	g.scan_undirected("in_test_1.txt");
	g.save("out_test_1.txt");
	
	Graph g_new = Kruskal_MST_cclabels ( g);

	std::cerr << g << endl << endl;	
		
	std::cerr << "g1 cc: " << endl;
	printMST(g, g_new.get_MST());
	
	vector<Edge> pc1 = { Edge(3, 4, 1), Edge(2, 3, 2), Edge(1, 2, 3), Edge(0, 1, 4) };
	if(!g_new.sameEdges(pc1)) 
		return false;

	g_new = Kruskal_MST_djsets ( g);
	std::cerr << "g1 djset: " << endl;	
	
	printMST(g, g_new.get_MST());
	
	if(!g_new.sameEdges(pc1)) 
		return false;	
	
	/*******************************************************/
	
	// g.scan_undirected("in_test_2.txt");
	// g.save("out_test_2.txt");

	// g_new = Kruskal_MST_cclabels ( g);

	 // std::cerr << g << endl << endl;	
		
	// std::cerr << "g2 cc: " << endl;
	// printMST(g, g_new.get_MST());
	
	// vector<Edge> pc2 = { Edge(2, 5, -5), Edge(1, 4, -3), Edge(0,1,-1), Edge(1,3,1), Edge(0,2,2), Edge(8,7, 3), Edge(5,8,4), Edge(2,5,5), Edge(7,8,6) };
	// if(!g_new.sameEdges(pc2)) 
		// return false;

	// g_new = Kruskal_MST_djsets ( g);
	// std::cerr << "g2 djset: " << endl;	
	
	// printMST(g, g_new.get_MST());
	
	// if(!g_new.sameEdges(pc2)) 
		// return false;		
	
	/*******************************************************/

 	/* g.scan("in_test_3.txt");	
	g.save("out_test_3.txt");
	
	std::cerr << g << endl << endl;	
	std::cerr << "g3 list: " << endl;	
	Node n3 = g.getNode(0);
	Dijkstra_list(g, n3);

	printDist(g);	
	
	vector<int> pc3 = { 0, 3, 6, 9, 12, 15 };
	if(!g.sameDistances(pc3)) 
		return false;

	std::cerr << g << endl << endl;	
	std::cerr << "g3 heap: " << endl;	
	n3 = g.getNode(0);
	Dijkstra_heap(g, n3);

	printDist(g);	
	
	if(!g.sameDistances(pc3)) 
		return false; */
	
	/*******************************************************/
	
/* 	g.scan("in_test_4.txt");	
	g.save("out_test_4.txt");
	
	std::cerr << g << endl << endl;	
	std::cerr << "g4 list: " << endl;	
	Node n4 = g.getNode(0);
	Dijkstra_list(g, n4);

	printDist(g);	
	
	vector<int> pc4 = { 0, 4, 8, 12, 8, 12, 12, 16, 16 };
	if(!g.sameDistances(pc4)) 
		return false;
	
	std::cerr << g << endl << endl;	
	std::cerr << "g4 heap: " << endl;	
	n4 = g.getNode(0);
	Dijkstra_heap(g, n4);

	printDist(g);	
	
	if(!g.sameDistances(pc4)) 
		return false; */
	
	/*******************************************************/
	
	// g.scan("in_test_5.txt");	
	// g.save("out_test_5.txt");
	
	// std::cerr << g << endl << endl;	
	// std::cerr << "g5 list: " << endl;	
	// Node n5 = g.getNode(0);
	// Dijkstra_list(g, n5);

	// printDist(g);	
	
	// vector<int> pc5 = { 0, 5, 10, 10, 10, 15, 15, 20, 25, 30, 20, 25 };
	// if(!g.sameDistances(pc5)) 
		// return false;  
	
	// std::cerr << g << endl << endl;	
	// std::cerr << "g5 heap: " << endl;	
	// n5 = g.getNode(0);
	// Dijkstra_heap(g, n5);

	// printDist(g);		
	
	// if(!g.sameDistances(pc5)) 
		// return false;  
	
	/*******************************************************/
	
	return true;	
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x1d8, %rsp            # imm = 0x1D8
leaq -0x168(%rbp), %rdi
callq 0x2b5c
leaq 0x3d6d(%rip), %rsi      # 0xb388
leaq -0xf8(%rbp), %rdi
leaq -0x1d8(%rbp), %rdx
callq 0x20e0
leaq -0x168(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x31e8
leaq -0xf8(%rbp), %rdi
callq 0x2110
leaq 0x3d42(%rip), %rsi      # 0xb396
leaq -0xf8(%rbp), %rdi
leaq -0x1d8(%rbp), %rdx
callq 0x20e0
leaq -0x168(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x48a8
leaq -0xf8(%rbp), %rdi
callq 0x2110
leaq -0xf8(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x9fc1
movq 0xa950(%rip), %rdi      # 0x11ff0
leaq -0x168(%rbp), %rsi
callq 0x4c9d
movq %rax, %rdi
callq 0x2120
movq %rax, %rdi
callq 0x2120
movq 0xa92d(%rip), %rdi      # 0x11ff0
leaq 0x3cdb(%rip), %rsi      # 0xb3a5
callq 0x2200
movq %rax, %rdi
callq 0x2120
leaq -0xf8(%rbp), %rdi
callq 0x432a
leaq -0x88(%rbp), %rdi
movq %rax, %rsi
callq 0x8090
leaq -0x168(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x7914
leaq -0x88(%rbp), %rdi
callq 0x29fc
leaq -0x1d8(%rbp), %rdi
pushq $0x3
popq %rsi
pushq $0x4
popq %rdx
movsd 0x3932(%rip), %xmm0     # 0xb058
callq 0x6b20
leaq -0x1c8(%rbp), %rdi
pushq $0x2
popq %rsi
pushq $0x3
popq %rdx
movsd 0x3c30(%rip), %xmm0     # 0xb370
callq 0x6b20
leaq -0x1b8(%rbp), %rdi
pushq $0x1
popq %rsi
pushq $0x2
popq %rdx
movsd 0x3c1e(%rip), %xmm0     # 0xb378
callq 0x6b20
leaq -0x1a8(%rbp), %rdi
pushq $0x1
popq %rdx
movsd 0x3c0f(%rip), %xmm0     # 0xb380
xorl %esi, %esi
callq 0x6b20
leaq -0x28(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
pushq $0x4
popq %rdx
leaq -0x9(%rbp), %rcx
callq 0x80e0
leaq -0x70(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x8090
leaq -0xf8(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x43e2
movl %eax, %ebx
leaq -0x70(%rbp), %rdi
callq 0x29fc
testb %bl, %bl
je 0x7866
leaq -0x1d8(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0xa22d
leaq -0xf8(%rbp), %rdi
leaq -0x1d8(%rbp), %rbx
movq %rbx, %rsi
callq 0x811a
movq %rbx, %rdi
callq 0x2938
movq 0xa7f9(%rip), %rdi      # 0x11ff0
leaq 0x3baf(%rip), %rsi      # 0xb3ad
callq 0x2200
movq %rax, %rdi
callq 0x2120
leaq -0xf8(%rbp), %rdi
callq 0x432a
leaq -0x58(%rbp), %rdi
movq %rax, %rsi
callq 0x8090
leaq -0x168(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x7914
leaq -0x58(%rbp), %rdi
callq 0x29fc
leaq -0x40(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x8090
leaq -0xf8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x43e2
movl %eax, %ebx
leaq -0x40(%rbp), %rdi
callq 0x29fc
jmp 0x7868
xorl %ebx, %ebx
leaq -0x28(%rbp), %rdi
callq 0x29fc
leaq -0xf8(%rbp), %rdi
callq 0x2938
leaq -0x168(%rbp), %rdi
callq 0x2938
movl %ebx, %eax
addq $0x1d8, %rsp            # imm = 0x1D8
popq %rbx
popq %rbp
retq
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
jmp 0x78b0
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
jmp 0x78b0
jmp 0x78e1
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0x29fc
jmp 0x78e4
jmp 0x78f1
movq %rax, %rbx
leaq -0x88(%rbp), %rdi
jmp 0x78e8
jmp 0x78dc
jmp 0x78cb
jmp 0x78dc
movq %rax, %rbx
leaq -0xf8(%rbp), %rdi
callq 0x2110
jmp 0x7900
movq %rax, %rbx
jmp 0x7900
movq %rax, %rbx
leaq -0x28(%rbp), %rdi
callq 0x29fc
jmp 0x78f4
jmp 0x78f1
movq %rax, %rbx
leaq -0xf8(%rbp), %rdi
callq 0x2938
leaq -0x168(%rbp), %rdi
callq 0x2938
movq %rbx, %rdi
callq 0x2370