hdu 1863 最小生成树+并查集 (Kruskal)
2018-03-12 21:13
369 查看
水题,直接上代码。
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
int n, m;
int p[1111], u[1111], v[1111], w[1111], r[1111];
bool cmp( int i, int j )
{
return w[i] < w[j];
}
int find( int x )
{
if( p[x] == x )
return x;
return p[x] = find( p[x] );
}
int main()
{
while( scanf("%d", &n) && n != 0 )
{
scanf("%d", &m);
for( int i = 1; i <= n; i++ )
scanf( "%d%d%d", &u[i], &v[i], &w[i] );
for( int i = 1; i <= m; i++) p[i] = i;
for( int i = 1; i <= n; i++) r[i] = i;
sort(r, r + n, cmp);
int q = 0;
int ans = 0;
for( int i = 1; i <= n; i++)
{
int e = r[i];
int x = find( u[e] );
int y = find( v[e] );
if( x != y)
{
ans += w[e];
p[x] = y;
q++;
}
}
if( q != m - 1 )
printf("?\n");
if( q == m - 1 )
printf("%d\n",ans);
}
return 0;
}
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
int n, m;
int p[1111], u[1111], v[1111], w[1111], r[1111];
bool cmp( int i, int j )
{
return w[i] < w[j];
}
int find( int x )
{
if( p[x] == x )
return x;
return p[x] = find( p[x] );
}
int main()
{
while( scanf("%d", &n) && n != 0 )
{
scanf("%d", &m);
for( int i = 1; i <= n; i++ )
scanf( "%d%d%d", &u[i], &v[i], &w[i] );
for( int i = 1; i <= m; i++) p[i] = i;
for( int i = 1; i <= n; i++) r[i] = i;
sort(r, r + n, cmp);
int q = 0;
int ans = 0;
for( int i = 1; i <= n; i++)
{
int e = r[i];
int x = find( u[e] );
int y = find( v[e] );
if( x != y)
{
ans += w[e];
p[x] = y;
q++;
}
}
if( q != m - 1 )
printf("?\n");
if( q == m - 1 )
printf("%d\n",ans);
}
return 0;
}
相关文章推荐
- hdu-1863畅通工程 最小生成树克鲁斯卡尔算法kruskal(并查集实现)&&prim普利姆算法实现
- HDU 1863 畅通工程 (最小生成树Kruskal)
- HDU 1863 并查集+最小生成树
- HDU 5253 最小生成树(kruskal)+ 并查集
- HDU-1863(最小生成树+并查集判断是否连通)
- hdu1863 kruskal(最小生成树)
- hdu 1863 畅通工程 最小生成树+并查集
- hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集
- [HDU] 3371 Connect the Cities [最小生成树,并查集,Kruskal]
- hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集
- hdu 1863 畅通工程 最小生成树模板入门题 prim+kruskal两种算法AC。
- hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集
- 畅通工程 hdu 1863 最小生成树+并查集 浙大计算机研究生复试上机考试-2007年
- 【最小生成树+kruskal】杭电 hdu 1863 畅通工程
- HDU 1863 畅通工程(最小生成树-Kruskal)
- HDU 1598 find the most comfortable road 【枚举+(并查集)最小生成树Kruskal】
- hdu 1863 畅通工程 (最小生成树kruskal 算法)
- hdu 1863(最小生成树kruskal)
- HDU - 1863[畅通工程] 最小生成树Kruskal
- hdu 1879_并查集_最小生成树_Kruskal