博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kruskal HDOJ 1863 畅通工程
阅读量:6261 次
发布时间:2019-06-22

本文共 1632 字,大约阅读时间需要 5 分钟。

 

1 /* 2     此题为:HDOJ 1233 + HDOJ 1232 3 */ 4 #include 
5 #include
6 #include
7 #include
8 using namespace std; 9 10 const int MAX_N = 100 + 10;11 int pre[MAX_N];12 int tot;13 int sum;14 struct NODE15 {16 int x, y;17 int len;18 }node[MAX_N];19 20 int find(int root)21 {22 int son, tmp;23 son = root;24 25 while (root != pre[root])26 {27 root = pre[root];28 }29 while (son != root)30 {31 tmp = pre[son];32 pre[son] = root;33 son = tmp;34 }35 36 return root;37 }38 39 bool cmp(NODE a, NODE b)40 {41 return a.len < b.len;42 }43 44 int main(void) //HDOJ 1863 畅通工程45 {46 //freopen ("inC.txt", "r", stdin);47 int n, m; //n路, m村庄48 49 while (~scanf ("%d%d", &n, &m) && n)50 {51 tot = m - 1;52 for (int i=1; i<=m; ++i)53 {54 pre[i] = i;55 }56 for (int i=1; i<=n; ++i)57 {58 scanf ("%d%d%d", &node[i].x, &node[i].y, &node[i].len);59 }60 sort (node+1, node+1+n, cmp);61 sum = 0;62 for (int i=1; i<=n; ++i)63 {64 int a, b;65 a = find (node[i].x);66 b = find (node[i].y);67 if (a != b)68 {69 pre[a] = b;70 sum += node[i].len;71 --tot;72 }73 }74 if (tot == 0)75 printf ("%d\n", sum);76 else77 puts ("?");78 }79 }

 

转载于:https://www.cnblogs.com/Running-Time/p/4513002.html

你可能感兴趣的文章
解决VS Code使用code runner开发Python乱码问题
查看>>
try-catch-finally块的运行机制
查看>>
1.6.2 保存到文件
查看>>
iOS开发多线程篇—多线程简单介绍
查看>>
构建之法读后感
查看>>
awk命令
查看>>
WorldWind Java 版学习:5、贴地面渲染过程
查看>>
Sql Server系列:存储过程
查看>>
Pointer 指针
查看>>
使用sqlyog将sql server 迁移到mysql
查看>>
lost connection to mysql server reading initial communication packet
查看>>
Eucalyptus安装包的功能列表
查看>>
mongodbOperator
查看>>
从零开始学Java(一)基础概念——什么是"编程和软件开发"?
查看>>
Latency
查看>>
System.Collections 学习
查看>>
Python 安装pyautogui
查看>>
Keras AttributeError 'NoneType' object has no attribute '_inbound_nodes'
查看>>
Gabor滤波器学习
查看>>
更改linux系统提示信息
查看>>