Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as C++ by asdasf ( 16 years ago )
#include "scp_keynodes.scsy"
#include "lib_keynodes.scsy"
#include "../wave_find_path_keynodes.scsy"
program(count_vertex_connectives,
[[
test_graph = {
vertex_: v1, vertex_: v2, vertex_: v3,
edge_: e1 = {v1, v2},
edge_: e2 = {v1, v3}
};
test_success; test_failure;
]], [{count_vertex_connectives,checked_vertexes,checked_vertexes}], {[]})
genEl([1_: assign_: node_: const_: checked_vertexes])
contAssign([1_:assign_:count_vertex_connectives,2_:fixed_:0])
callReturn([
1_: fixed_: vertex_test,
2_: {[1_: test_graph, 2_: v1, 3_:checked_vertexes,4_:checked_vertexes]}], descr)
printNl([1_: fixed_: count_vertex_connectives])
return()
end
procedure(vertex_test,
[[
vertex_, edge_;
"path*";
]],
[{
graph,
arc,arc1,temp_arc, //временные дуги
temp_vertex,
vertex1,vertex2, //временные вершины
descr, // дескриптор для ожидания завершения выполнения параллельного процесса
vertexes, //множество вершин
edge_iter_arc,
cur_vertex,
edges,
cur_edge,
count_vertex_connectives,
checked_vertexes // _непросмотренные вершины
}],
[{
1_: in_: graph, //_gi
2_: in_: vertex1, // _vertex
3_: in_: checked_vertexes,
5_: out_: checked_vertexes // _conn
}])
// Формируем множество ребер
searchSetStr5([
1_: fixed_: graph,
2_: assign_: const_: pos_: arc,
3_: assign_: temp_vertex,
4_: assign_: const_: pos_: arc1,
5_: fixed_: edge_,
set3_: assign_: edges
],, return_label)
//добавляем вершину в список просмотренных
genElStr3([
1_: fixed_: checked_vertexes,
2_: assign_: const_: pos_: temp_arc,
3_: fixed_: vertex1
])
// Производим итерацию по ребрам
label(iter_next_edge)
searchElStr3([
1_: fixed_: edges,
2_: assign_: edge_iter_arc,
3_: assign_: cur_edge
],, iter_end_edge)
//ищем конструкцию с нашей вершиной
searchElStr3([
1_: fixed_: cur_edge,
2_: assign_: arc,
3_: fixed_: vertex1
],, iter_end_edge)
//ищем вторую вершину
searchElStr3([
1_: fixed_: cur_edge,
2_: assign_: arc,
3_: assign_: vertex2
],,)
//проверяем эту вершину в списке проверенных вершин
searchElStr3([
1_: fixed_: checked_vertexes,
2_: assign_: arc,
3_: fixed_: vertex2
],erase_edge_iter_arc,)
callReturn([
1_: fixed_: vertex_test,
2_: {[1_: graph, 2_: vertex2, 3_:checked_vertexes,4_:checked_vertexes]}], descr)
label(erase_edge_iter_arc)
eraseEl([1_: fixed_: f_: edge_iter_arc], iter_next_edge, iter_next_edge)
label(iter_end_edge)
// удаляем из памяти множество ребер
eraseEl([1_: fixed_: f_: edges])
label(return_label)
return()
end
Revise this Paste