48 void recur_graph(
int set_id,
int * dependancy_list,
int current_tree,
int * check)
61 if (*check < 0)
return;
63 auto edge =
set_gr.begin()+set_id-1;
64 if (edge -> color > 0)
return;
66 if (edge->closed_tree_check == current_tree) {
68 *check = -current_tree;
72 edge->closed_tree_check=current_tree;
74 for (
int i=0; i< edge->dep_size; i++) {
75 int new_set = edge->set_list[i];
77 recur_graph(new_set, dependancy_list, current_tree,check );
79 if (*check < 0)
return;
83 if ( edge->color == 0){
84 edge->color =edge->id;
115 for (
int i=0;i<dep_sz;i++)
138 for (
auto edge =
set_gr.begin(); edge !=
set_gr.end(); edge++){
139 int edg_id = edge ->
id;
141 if ( edge->dep_size == 0 && edge->color == 0){
143 edge->color =edge->id;
148 recur_graph(edg_id, dependancy_list, edg_id ,check);
149 if (*check < 0)
return;
156 std::vector<struct Edge>().swap(
set_gr);
165 for (
auto edge =
set_gr.begin(); edge !=
set_gr.end(); edge++){
166 cout <<
"id: " << edge->id <<
" color: " << edge->color <<
" size: " << edge->dep_size << endl;
168 int * list = edge-> set_list;
169 for (
int i=0; i< edge->dep_size ; i++){
170 cout << list[i] <<
"," ;
185#define set_graph_add_set_ SET_GRAPH_ADD_SET
186#define set_graph_sort_ SET_GRAPH_SORT
187#define set_graph_clean_ SET_GRAPH_CLEAN
220 set_of_set.dependancy_sort(dependancy_list,check);
259 my_set_graph.
print();
261 cout << endl <<
" dependency computation " << endl ;
262 cout <<
" ------------------------" << endl << endl ;
267 for (
int i=0;i<slist;i++) { list[i]=0; }
271 cout << endl <<
"error - SET " << -check <<
" has circular dependency" << endl;
274 cout <<
"-------------------" << endl << endl ;
275 for (
int i=0;i<slist;i++) { cout << list[i] <<
"-" ; }
276 cout << endl << endl ;
void init_edge(int edge, int dep_sz, int *dep_list)
vector< struct Edge > set_gr
void recur_graph(int set_id, int *dependancy_list, int current_tree, int *check)
void dependancy_sort(int *dependancy_list, int *check)
void _FCALL set_graph_add_set_(int *set_id, int *set_list, int *list_size)
void _FCALL set_graph_clean_()
void _FCALL set_graph_sort_(int *dependancy_list, int *check)