Circle Intersection with Sweep Line Algorithm
You're definitely on the right track. The big question is: when you insert a circle, which other circles do you check for intersection? How do you perform this check? 

In the line segment intersection case, the line segments at any given x coordinate are totally ordered. (You can list them from lowest to highest Y coordinate). Thus, you can maintain the line segments in a binary search tree, and when you add a new segment, you only need to find out where it belongs in the binary search tree, and check its neighbors for intersection events. 

In the circles case, its not immediately clear which circles to check. If your answer is "all of them" then your algorithm needs some work. 

Can you figure out a way to represent the circles so that they are totally ordered, like the line segments are? 


   Try representing the circles as two half-circles. Each insert event is actually two events: insert top half, and insert bottom half.