并查集练习2:HDOJ1232
2017-04-27 15:21
363 查看
建立权重并查集,水过。
可以直接写while(cin >> N),感觉比C的!EOF好用。
#include <iostream>
using namespace std;
int findroot(int a) ;
void unionroot(int a, int b) ;
int city[1005] ;
int weight[1005] ;
int main()
{
int N = 0 ,M = 0 ;
int a =0 , b = 0 ;
int result = 0;
while(cin >> N)
{
if(N==0)
break;
cin >> M ;
for(int i = 1; i<=N ; i++)
{
city[i] = i ;
weight[i] = 1 ;
}
result = 0 ;
while(M--)
{
cin >> a >> b ;
int roota = 0 ,rootb = 0 ;
roota = findroot(a) ;
rootb = findroot(b) ;
if(roota != rootb)
unionroot(roota, rootb);
}
for(int i = 1; i<=N ; i++)
{
if(city[i]==i)
result++ ;
}
cout << result -1 << endl ;
}
return 0;
}
int findroot(int a)
{
while(a!=city[a])
{
a = city[a] ;
}
return a ;
}
void unionroot(int a, int b)
{
if(weight[a]>weight[b])
{
city[b] = a ;
weight[a]+=weight[b] ;
}
else
{
city[a] = b ;
weight[b]+=weight[a] ;
}
}
可以直接写while(cin >> N),感觉比C的!EOF好用。
#include <iostream>
using namespace std;
int findroot(int a) ;
void unionroot(int a, int b) ;
int city[1005] ;
int weight[1005] ;
int main()
{
int N = 0 ,M = 0 ;
int a =0 , b = 0 ;
int result = 0;
while(cin >> N)
{
if(N==0)
break;
cin >> M ;
for(int i = 1; i<=N ; i++)
{
city[i] = i ;
weight[i] = 1 ;
}
result = 0 ;
while(M--)
{
cin >> a >> b ;
int roota = 0 ,rootb = 0 ;
roota = findroot(a) ;
rootb = findroot(b) ;
if(roota != rootb)
unionroot(roota, rootb);
}
for(int i = 1; i<=N ; i++)
{
if(city[i]==i)
result++ ;
}
cout << result -1 << endl ;
}
return 0;
}
int findroot(int a)
{
while(a!=city[a])
{
a = city[a] ;
}
return a ;
}
void unionroot(int a, int b)
{
if(weight[a]>weight[b])
{
city[b] = a ;
weight[a]+=weight[b] ;
}
else
{
city[a] = b ;
weight[b]+=weight[a] ;
}
}
相关文章推荐
- 并查集 hdoj1232 NOIP 2010
- 并查集练习4:HDOJ1272
- hdoj 1232+hdoj 1272 (并查集)
- HDOJ---1232 畅通工程[并查集]
- 并查集(模版题HDOJ1232 畅通工程)(HDOJ1198 Farm Irrigation)
- HDOJ-----1232并查集
- HDOJ_1232 并查集 畅通工程
- HDOJ-1232(并查集)
- hdoj 1232 畅通工程 【并查集】
- HDOJ 1232 畅通工程 (并查集)
- HDOJ 1232 畅通工程(并查集)
- HDOJ1232 并查集
- hdu/hdoj 1232 畅通工程---并查集
- HDOJ 1232 畅通工程(并查集)
- HDOJ 1232 畅通工程 (并查集)
- HDOJ1232 畅通工程(并查集)
- 并查集 HDOJ 1232 畅通工程
- hdoj-1232 畅通工程【并查集】
- 并查集之畅通工程 hdoj 1232
- 解题报告-HDOJ-1232(并查集)