Each peer-to-peer connection is represented by an instance of MCSession. So in your example, you will have 3 UNIQUE pointers to MCSession objects:
MCSession *p1 = a->b
MCSession *p2 = a->c
MCSession *p3 = a->d
so to disconnect peer c you will:
[p2 disconnect]; // release the session
p2 = nil; // release the resource
Of course, you can store sessions in a mutable array and then do the same logic, but use the pointer from the array
p2 = (MCSession *)[array objectAtIndex:1];
[p2 disconnect];
[array removeObjectAtIndex:1];