******** fig9.66 ********** /* assign low. Also check for articulation points */ void assign_low( vertex v ) { vertex w; /*1*/ low[v] = num[v]; /* Rule 1 */ /*2*/ for each w adjacent to v { /*3*/ if( num[w] > num[v] ) /* forward edge */ { /*4*/ assign_low( w ); /*5*/ if( low[w] >= num[v] ) /*6*/ printf("%v is an articulation point\n", v ); /*7*/ low[v] = min( low[v], low[w] ); /* Rule 3 */ } else /*8*/ if( parent[v] != w ) /* back edge */ /*9*/ low[v] = min( low[v], num[w] ); /* Rule 2 */ } }