void markreachable ( State s , State okay , State mark ) { Arc a ; if ( s . tmp != okay ) { return ; } s . tmp = mark ; for ( a = s . outs ; a != null ; a = a . outchain ) { markreachable ( a . to , okay , mark ) ; } }
markreachable - recursive marking of reachable states