$a[$v[$i]-1]){ if(!isset($route[$v[$i]])) $route[$v[$i]]=[]; $route[$v[$i]][$u[$i]] = true; $cnt[$u[$i]]++; } } //var_dump($cnt); $q = new SplQueue(); for($i=1;$i<=$n;$i++){ if($cnt[$i]==0){ // echo $i." "; $q->enqueue($i); } } //echo PHP_EOL; $ans = 0; $ans2 = []; //echo "------------".PHP_EOL; while($q->count() > 0){ $i = $q->dequeue(); // echo $i."=".($sw[$i] ? "on" : "off"); if($sw[$i]) { $ans++; $ans2[] = $i; } if(!isset($route[$i])) { // echo PHP_EOL; continue; } foreach($route[$i] as $j => $v){ $cnt[$j]--; // echo $j.":".$cnt[$j]." "; if($sw[$i]){ $sw[$j] = !$sw[$j]; } if($cnt[$j] == 0){ $q->enqueue($j); } } // echo PHP_EOL; } //echo "------------".PHP_EOL; echo $ans; echo PHP_EOL; echo implode(PHP_EOL, $ans2);