Dear colleagues,

I am trying to group observations based on their (possibly indirect) connections . For example, imagine workers may have worked at different branches and the following is their working history (not time sensitive).
Code:
clear
input personid branchid
1 1
2 1
1 2
3 2
3 3
4 3
5 4
6 4
end

The goal is to generate a new variable (group) that yields the following.
personid branchid group
1 1 1
2 1 1
1 2 1
3 2 1
3 3 1
4 3 1
5 4 2
6 4 2

The logic is that personal 1 is directly connected to person 2 (they both worked at branch office 1) and also to person 3 (they both worked at branch office 2), and indirectly connected to person 4 (because 3 and 4 both worked at branch office 3), hence persons 1-4 shall all belong to the same group. Similarly for person 5 and 6 as another group. Any comments on how to code and generate the group would be greatly appreciated!

Thanks.
Hua