%%%%% Graph 1 %%%%
edge(s,n1,6).
edge(s,n2,4).
edge(s,n3,3.1).
edge(n1,n3,2.4).
edge(n1,t,7).
edge(n2,n3,3.3).
edge(n2,n4,5).
edge(n3,n4,5.2).
edge(n3,n5,3.6).
edge(n4,n5,1).
edge(n4,t,2.2).
edge(n5,t,2).

%%%% Graph 2 %%%%
/*
edge(a,b,4.2).
edge(a,c,1.2).
edge(a,d,3.0).
edge(a,e,2.2).
edge(b,c,3.5).
edge(b,d,2.0).
edge(b,e,1.7).
edge(c,d,3.4).
edge(c,e,2.2).
edge(d,e,3.2).
*/

connection(N1,N2,Cost):-edge(N1,N2,Cost),\+(N1=N2).
connection(N1,N2,Cost):-edge(N2,N1,Cost),\+(N1=N2).

incomplete_node_list(L,N):-
	connection(N,_,_),
	\+ (member(N,L)).

graph_nodes(Acc,L):-
	incomplete_node_list(Acc,N),!,
	graph_nodes([N|Acc],L).

graph_nodes(L,L).

graph_nodes(L) :- graph_nodes([],L),!.

graph_nodes(L1):-
	graph_nodes([],L2),
	sort(L1,S),
	sort(L2,S).
