#include <cstdio>
int UFS[1000] = {0};
void Initiate( int N )
{
for( int i = 0; i < N; ++i )
UFS[i] = i;
}
/*
int Find( int k )
{
while( UFS[k] != k )
k = UFS[k];
return k;
}*/
int Find( int k )//路径压缩查找根
{
if( UFS[k] == k )
return k;
return UFS[k] = Find( UFS[k] );
}
int Union( int k1, int k2 )
{
int k1F = Find( k1 ), k2F = Find( k2 );
if( k1F != k2F )
UFS[k1F] = k2F;
}
int main()
{
int N;
scanf("%d", &N);
Initiate( N );
}
并查集
最新推荐文章于 2024-07-30 09:25:05 发布