Premesso che nel esempio hai 10 id (cat) e gli id devono essere univoci, se non aggiungi una chiamata ajax che modifica dinamicamente la selectB e C è ovvio che mostrerà tutte le option presenti nelle select.
Per avere solo le opion collegate ad una scelta devi popolare le selectB e C dinamicamente con ajax (e probabilmente usando json) forse puoi prendere spunti da qui (l'esempio usa regione > provincie > città) ma la logica non cambia![]()