HDU - 1863 畅通工程
来源:互联网 发布:软件安装包制作 编辑:程序博客网 时间:2024/05/07 15:09
解题思路:并查集。根据造价排序,价格少的优先,如果不在同一个集合就合并,加上价格。最后判断有几个集合,若大于 1 个就说明所给方案不能连接所有村庄,输出 ?
#include <iostream>#include <algorithm>using namespace std;struct node { int a, b, v;};node p[1010];int fa[1010];int gf(int x) { if (fa[x] == x) return x; fa[x] = gf(fa[x]);}bool judge(int x, int y) { int fx = gf(x); int fy = gf(y); if (fx == fy) return 1; fa[fx] = fy; return 0;}bool cmp (node a, node b) { return a.v < b.v;}int main() { int N, M; while (scanf("%d%d", &N, &M) && N) { for (int i = 0; i < N; i++) scanf("%d%d%d", &p[i].a, &p[i].b, &p[i].v); for (int i = 0; i <= M; i++) fa[i] = i; sort (p, p+N, cmp); int sum = 0; for (int i = 0; i < N; i++) { if (!judge(p[i].a, p[i].b)) sum += p[i].v; } int flag = 0; for (int i = 1; i <= M; i++) if (fa[i] == i) flag++; if (flag == 1) cout << sum << endl; else cout << "?" << endl; }return 0;}
0 0
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- hdu 1863 畅通工程
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- hdu 1863 畅通工程
- hdu 1863 畅通工程
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- hdu 1863 畅通工程
- hdu 1863 畅通工程
- HDU-畅通工程-1863
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- JavaScript 动态添加、移除元素或属性
- 注释转换项目精益版实现
- Caffe--Ubuntu 14.04 64bit caffe安装(无gpu)
- RecyclerView的二级缓存 View缓存的两种方式
- 第六天
- HDU - 1863 畅通工程
- CentOs 6.5安装apache 安装php 安装mysql
- windows查看端口占用情况
- spark-2.0.2变动
- spring 注解详解
- BZOJ3144: [Hnoi2013]切糕
- 机器人入门困惑之资料总结
- 第七天
- 第八天