>>13
最終的に何をやりたいかにもよる。

全てのノードへのポインタをunordered_setで保持して、確保するときは必ずそのunordered_setにinsertし、ノード間は生のポインタを使う
なんて実装も可能で、場合によってはその方が実行速度が速い。

BはA以外からは所有されないのであれば、shared_ptrよりunique_ptrの方が意味的には適切。