#Python 2, 107 bytes
Python 2, 107 bytes
Still trying to figure out if I can golf this more, but for now, this is the best I can do.
def u(g):e=enumerate;o=[set(_)-{i}for i,_ in e(g)];[o[j].add(i)for i,_ in e(o)for j in _];print map(list,o) I use sets to prevent duplicates; also, unlike list.remove(i), {S}-{i} doesn't throw an error if i is not in S.