糞コードをこんな感じに修正しました。どなたか採点していただけますか?
http://ideone.com/KYia26
修正点は以下です。
・weak_ptrをshared_ptrや参照に置き換えた
・一番親のAはBのリストをshared_ptrからunique_ptrに置き換えた

書いてて思ったのですが、今回のような複数のオブジェクトから参照されるオブジェクトをソートする場合は
スマポあるいは生ポを使う以外方法がないんではないでしょうか?