38 const typename Graph::NodeIndex num_nodes) {
40 graph.
Reserve(num_nodes, num_nodes * (num_nodes - 1));
41 graph.AddNode(num_nodes - 1);
42 for (
typename Graph::NodeIndex src = 0; src < num_nodes; ++src) {
43 for (
typename Graph::NodeIndex dst = src + 1; dst < num_nodes; ++dst) {
44 graph.AddArc(src, dst);
45 graph.AddArc(dst, src);
68 const typename Graph::NodeIndex num_nodes_1,
69 const typename Graph::NodeIndex num_nodes_2) {
71 graph.
Reserve(num_nodes_1 + num_nodes_2, 2 * num_nodes_1 * num_nodes_2);
72 graph.AddNode(num_nodes_1 + num_nodes_2 - 1);
73 for (
typename Graph::NodeIndex src = 0; src < num_nodes_1; ++src) {
74 for (
typename Graph::NodeIndex dst = 0; dst < num_nodes_2; ++dst) {
75 graph.AddArc(src, num_nodes_1 + dst);
76 graph.AddArc(num_nodes_1 + dst, src);
106 const typename Graph::NodeIndex num_nodes_1,
107 const typename Graph::NodeIndex num_nodes_2) {
109 graph.
Reserve(num_nodes_1 + num_nodes_2, num_nodes_1 * num_nodes_2);
110 graph.AddNode(num_nodes_1 + num_nodes_2 - 1);
111 for (
typename Graph::NodeIndex src = 0; src < num_nodes_1; ++src) {
112 for (
typename Graph::NodeIndex dst = 0; dst < num_nodes_2; ++dst) {
113 graph.AddArc(src, num_nodes_1 + dst);