这是我手打的模板,希望能对大家做题有帮助!
#include <iostream>
using namespace std;
int n , m;
int f[ 100010 ];
//f[i]:表示i的上司是谁,也就是说i在树上父亲是谁
int find( int x )
{
//返回x所在公司的最上层老板
if( f[x] == x )
return x;
f[x] = find( f[x] );
return f[x];
}
void merge( int x , int y )
{
//合并x所在公司和y所在公司
int a = find( x ) , b = find( y );
f[a] = b;
}
int main()
{
cin >> n >> m;
for( int i = 1 ; i <= n ; i++ )
f[i] = i;
while( m-- )
{
int z , x , y;
cin >> z >> x >> y;
if( z == 1 )
{
merge( x , y );
}
else
{
if( find( x ) == find( y ) )
puts( "Y" );
else
puts( "N" );
}
}
return 0;
}
%%%