31
31
<a name="line21"> 21: </a><font color="#B22222">/* NLVL - <A href="../../../docs/manualpages/IS/IS.html#IS">IS</A> THE NUMBER OF LEVELS IN THE LEVEL STRUCTURE.*/</font>
32
32
<a name="line22"> 22: </a><font color="#B22222">/* (XLS, LS) - ARRAY PAIR FOR THE ../../..ED LEVEL STRUCTURE.*/</font>
33
33
<a name="line23"> 23: </a><font color="#B22222">/*****************************************************************/</font>
34
<a name="line24"> 24: </a><strong><font color="#4169E1"><a name="SPARSEPACKrootls"></a>int SPARSEPACKrootls(int *root, int *xadj, int *adjncy, </font></strong>
35
<a name="line25"> 25: </a><strong><font color="#4169E1"> int *mask, int *nlvl, int *xls, int *ls)</font></strong>
36
<a name="line26"> 26: </a>{
37
<a name="line27"> 27: </a> <font color="#B22222">/* System generated locals */</font>
38
<a name="line28"> 28: </a> int i__1, i__2;
40
<a name="line30"> 30: </a> <font color="#B22222">/* Local variables */</font>
41
<a name="line31"> 31: </a> int node, i, j, jstop, jstrt, lbegin, ccsize, lvlend, lvsize,
42
<a name="line32"> 32: </a> nbr;
44
<a name="line34"> 34: </a><font color="#B22222">/* INITIALIZATION ...*/</font>
47
<a name="line38"> 38: </a> <font color="#B22222">/* Parameter adjustments */</font>
48
<a name="line39"> 39: </a> --ls;
49
<a name="line40"> 40: </a> --xls;
50
<a name="line41"> 41: </a> --mask;
51
<a name="line42"> 42: </a> --adjncy;
52
<a name="line43"> 43: </a> --xadj;
54
<a name="line45"> 45: </a> mask[*root] = 0;
55
<a name="line46"> 46: </a> ls[1] = *root;
56
<a name="line47"> 47: </a> *nlvl = 0;
57
<a name="line48"> 48: </a> lvlend = 0;
58
<a name="line49"> 49: </a> ccsize = 1;
59
<a name="line50"> 50: </a><font color="#B22222">/* LBEGIN <A href="../../../docs/manualpages/IS/IS.html#IS">IS</A> THE POINTER TO THE BEGINNING OF THE CURRENT*/</font>
60
<a name="line51"> 51: </a><font color="#B22222">/* LEVEL, AND LVLEND POINTS TO THE END OF THIS LEVEL.*/</font>
61
<a name="line52"> 52: </a><strong><font color="#FF0000">L200:</font></strong>
62
<a name="line53"> 53: </a> lbegin = lvlend + 1;
63
<a name="line54"> 54: </a> lvlend = ccsize;
64
<a name="line55"> 55: </a> ++(*nlvl);
65
<a name="line56"> 56: </a> xls[*nlvl] = lbegin;
66
<a name="line57"> 57: </a><font color="#B22222">/* GENERATE THE NEXT LEVEL BY FINDING ALL THE MASKED */</font>
67
<a name="line58"> 58: </a><font color="#B22222">/* NEIGHBORS OF NODES IN THE CURRENT LEVEL.*/</font>
68
<a name="line59"> 59: </a> i__1 = lvlend;
69
<a name="line60"> 60: </a> <font color="#4169E1">for</font> (i = lbegin; i <= i__1; ++i) {
70
<a name="line61"> 61: </a> node = ls[i];
71
<a name="line62"> 62: </a> jstrt = xadj[node];
72
<a name="line63"> 63: </a> jstop = xadj[node + 1] - 1;
73
<a name="line64"> 64: </a> <font color="#4169E1">if</font> (jstop < jstrt) {
74
<a name="line65"> 65: </a> <font color="#4169E1">goto</font> L400;
75
<a name="line66"> 66: </a> }
76
<a name="line67"> 67: </a> i__2 = jstop;
77
<a name="line68"> 68: </a> <font color="#4169E1">for</font> (j = jstrt; j <= i__2; ++j) {
78
<a name="line69"> 69: </a> nbr = adjncy[j];
79
<a name="line70"> 70: </a> <font color="#4169E1">if</font> (mask[nbr] == 0) {
80
<a name="line71"> 71: </a> <font color="#4169E1">goto</font> L300;
81
<a name="line72"> 72: </a> }
82
<a name="line73"> 73: </a> ++ccsize;
83
<a name="line74"> 74: </a> ls[ccsize] = nbr;
84
<a name="line75"> 75: </a> mask[nbr] = 0;
85
<a name="line76"> 76: </a><strong><font color="#FF0000">L300:</font></strong>
86
<a name="line77"> 77: </a> ;
87
<a name="line78"> 78: </a> }
88
<a name="line79"> 79: </a><strong><font color="#FF0000">L400:</font></strong>
89
<a name="line80"> 80: </a> ;
90
<a name="line81"> 81: </a> }
91
<a name="line82"> 82: </a><font color="#B22222">/* COMPUTE THE CURRENT LEVEL WIDTH.*/</font>
92
<a name="line83"> 83: </a><font color="#B22222">/* IF IT <A href="../../../docs/manualpages/IS/IS.html#IS">IS</A> NONZERO, GENERATE THE NEXT LEVEL.*/</font>
93
<a name="line84"> 84: </a> lvsize = ccsize - lvlend;
94
<a name="line85"> 85: </a> <font color="#4169E1">if</font> (lvsize > 0) {
95
<a name="line86"> 86: </a> <font color="#4169E1">goto</font> L200;
96
<a name="line87"> 87: </a> }
97
<a name="line88"> 88: </a><font color="#B22222">/* RESET MASK TO ONE FOR THE NODES IN THE LEVEL STRUCTURE.*/</font>
98
<a name="line89"> 89: </a> xls[*nlvl + 1] = lvlend + 1;
99
<a name="line90"> 90: </a> i__1 = ccsize;
100
<a name="line91"> 91: </a> <font color="#4169E1">for</font> (i = 1; i <= i__1; ++i) {
101
<a name="line92"> 92: </a> node = ls[i];
102
<a name="line93"> 93: </a> mask[node] = 1;
103
<a name="line94"> 94: </a> }
104
<a name="line95"> 95: </a> <font color="#4169E1">return</font>(0);
105
<a name="line96"> 96: </a>}
34
<a name="line26"> 26: </a><strong><font color="#4169E1"><a name="SPARSEPACKrootls"></a>int SPARSEPACKrootls(int *root, int *xadj, int *adjncy, </font></strong>
35
<a name="line27"> 27: </a><strong><font color="#4169E1"> int *mask, int *nlvl, int *xls, int *ls)</font></strong>
36
<a name="line28"> 28: </a>{
37
<a name="line29"> 29: </a> <font color="#B22222">/* System generated locals */</font>
38
<a name="line30"> 30: </a> int i__1, i__2;
40
<a name="line32"> 32: </a> <font color="#B22222">/* Local variables */</font>
41
<a name="line33"> 33: </a> int node, i, j, jstop, jstrt, lbegin, ccsize, lvlend, lvsize,
42
<a name="line34"> 34: </a> nbr;
44
<a name="line36"> 36: </a><font color="#B22222">/* INITIALIZATION ...*/</font>
47
<a name="line40"> 40: </a> <font color="#B22222">/* Parameter adjustments */</font>
48
<a name="line41"> 41: </a> --ls;
49
<a name="line42"> 42: </a> --xls;
50
<a name="line43"> 43: </a> --mask;
51
<a name="line44"> 44: </a> --adjncy;
52
<a name="line45"> 45: </a> --xadj;
54
<a name="line47"> 47: </a> mask[*root] = 0;
55
<a name="line48"> 48: </a> ls[1] = *root;
56
<a name="line49"> 49: </a> *nlvl = 0;
57
<a name="line50"> 50: </a> lvlend = 0;
58
<a name="line51"> 51: </a> ccsize = 1;
59
<a name="line52"> 52: </a><font color="#B22222">/* LBEGIN <A href="../../../docs/manualpages/IS/IS.html#IS">IS</A> THE POINTER TO THE BEGINNING OF THE CURRENT*/</font>
60
<a name="line53"> 53: </a><font color="#B22222">/* LEVEL, AND LVLEND POINTS TO THE END OF THIS LEVEL.*/</font>
61
<a name="line54"> 54: </a><strong><font color="#FF0000">L200:</font></strong>
62
<a name="line55"> 55: </a> lbegin = lvlend + 1;
63
<a name="line56"> 56: </a> lvlend = ccsize;
64
<a name="line57"> 57: </a> ++(*nlvl);
65
<a name="line58"> 58: </a> xls[*nlvl] = lbegin;
66
<a name="line59"> 59: </a><font color="#B22222">/* GENERATE THE NEXT LEVEL BY FINDING ALL THE MASKED */</font>
67
<a name="line60"> 60: </a><font color="#B22222">/* NEIGHBORS OF NODES IN THE CURRENT LEVEL.*/</font>
68
<a name="line61"> 61: </a> i__1 = lvlend;
69
<a name="line62"> 62: </a> <font color="#4169E1">for</font> (i = lbegin; i <= i__1; ++i) {
70
<a name="line63"> 63: </a> node = ls[i];
71
<a name="line64"> 64: </a> jstrt = xadj[node];
72
<a name="line65"> 65: </a> jstop = xadj[node + 1] - 1;
73
<a name="line66"> 66: </a> <font color="#4169E1">if</font> (jstop < jstrt) {
74
<a name="line67"> 67: </a> <font color="#4169E1">goto</font> L400;
75
<a name="line68"> 68: </a> }
76
<a name="line69"> 69: </a> i__2 = jstop;
77
<a name="line70"> 70: </a> <font color="#4169E1">for</font> (j = jstrt; j <= i__2; ++j) {
78
<a name="line71"> 71: </a> nbr = adjncy[j];
79
<a name="line72"> 72: </a> <font color="#4169E1">if</font> (mask[nbr] == 0) {
80
<a name="line73"> 73: </a> <font color="#4169E1">goto</font> L300;
81
<a name="line74"> 74: </a> }
82
<a name="line75"> 75: </a> ++ccsize;
83
<a name="line76"> 76: </a> ls[ccsize] = nbr;
84
<a name="line77"> 77: </a> mask[nbr] = 0;
85
<a name="line78"> 78: </a><strong><font color="#FF0000">L300:</font></strong>
86
<a name="line79"> 79: </a> ;
87
<a name="line80"> 80: </a> }
88
<a name="line81"> 81: </a><strong><font color="#FF0000">L400:</font></strong>
89
<a name="line82"> 82: </a> ;
90
<a name="line83"> 83: </a> }
91
<a name="line84"> 84: </a><font color="#B22222">/* COMPUTE THE CURRENT LEVEL WIDTH.*/</font>
92
<a name="line85"> 85: </a><font color="#B22222">/* IF IT <A href="../../../docs/manualpages/IS/IS.html#IS">IS</A> NONZERO, GENERATE THE NEXT LEVEL.*/</font>
93
<a name="line86"> 86: </a> lvsize = ccsize - lvlend;
94
<a name="line87"> 87: </a> <font color="#4169E1">if</font> (lvsize > 0) {
95
<a name="line88"> 88: </a> <font color="#4169E1">goto</font> L200;
96
<a name="line89"> 89: </a> }
97
<a name="line90"> 90: </a><font color="#B22222">/* RESET MASK TO ONE FOR THE NODES IN THE LEVEL STRUCTURE.*/</font>
98
<a name="line91"> 91: </a> xls[*nlvl + 1] = lvlend + 1;
99
<a name="line92"> 92: </a> i__1 = ccsize;
100
<a name="line93"> 93: </a> <font color="#4169E1">for</font> (i = 1; i <= i__1; ++i) {
101
<a name="line94"> 94: </a> node = ls[i];
102
<a name="line95"> 95: </a> mask[node] = 1;
103
<a name="line96"> 96: </a> }
104
<a name="line97"> 97: </a> <font color="#4169E1">return</font>(0);
105
<a name="line98"> 98: </a>}