java数据结构并查集问题

在编写的一个java游戏中遇到了这样一个问题。
游戏规则:

img


如图,给定的棋盘上有多个小岛,红蓝两个玩家可以在岛上和水里下棋(三角和圆形是村庄或村民,棕色圆是资源,不用关注)。游戏结算时,红蓝两玩家要找到自己最长的一条链,这条链链接了多少个岛屿就得多少分。本图中红蓝两个玩家最多链接起来的绿色小岛数都是2,所以两者得分都是2.
我要如何编写代码来找到最长链呢?大致提供思路即可,这应该是一个并查集问题,我不知道如何处理合并多个子链的问题。