Welcome, guest! Login / Register - Why register?
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

Your Name: Code Language: