class UFS
{
int[] arr;
public UFS( int len )
{
this.arr = new int[len];
Arrays.fill( arr , -1 );
}
public int find( int k )
{
if( arr[k]<0 )
return k;
if( arr[arr[k]]>=0 )
arr[k] = find(arr[k]);
return arr[k];
}
public void union( int a , int b )
{
int wa = find(a) , wb = find(b);
if( wa == wb )
return;
if( -arr[b] > -arr[a] )
{
int temp = wa;
wa = wb;
wb = temp;
}
arr[wa] += arr[wb];
arr[wb] = wa;
}
}
JAVA - 并查集
最新推荐文章于 2024-04-10 13:13:47 发布