首页 > 代码库 > hdu--1231--并查集<连分量的个数>
hdu--1231--并查集<连分量的个数>
我觉得 这题 是纯粹的 并查集 可以算成 入门题吧
问你有几章桌子 就是问你有几个 连通块嘛 一个道理
touch me
这题 我采用了下 father[x]开始 初始化为-1
1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 5 const int size = 1010; 6 int father[size]; 7 8 int find( int x ) 9 {10 return father[x] == -1 ? x : father[x] = find( father[x] );11 }12 13 void Union( int x , int y )14 {15 x = find(x);16 y = find(y);17 if( x!=y )18 {19 father[x] = y;20 }21 }22 23 int main()24 {25 int t , n , m , cnt , x , y;26 cin >> t;27 while( t-- )28 {29 cnt = 0;30 cin >> n >> m;31 memset( father , -1 , sizeof(father) );32 while( m-- )33 {34 cin >> x >> y;35 Union( x, y );36 }37 for( int i = 1 ; i<=n ; i++ )38 {39 if( father[i] == -1 )40 {41 cnt ++;42 }43 }44 cout << cnt << endl;45 }46 return 0;47 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。