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

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

依然是:MST, kruskal,并查集,路径压缩;

在LD下的CB中老是提示segmentation fault,不知什么错误,回到win运行一闪而过而没有输出,查了半天发现查函数有一处错误,继续,仍然无输出,怀疑变量命名错误,更改,仍然无输出,最后发现文件保存的路径和输入文件的路径不一致,怎么样,流水账记得不错吧?

500MS,看了排行榜上没有0MS的,明白这道题500MS不算浪费时间。

# include 
# include
typedef struct { int u, v; int w;}Road;int m, n, p[105];Road r[5005];int kruskal(int n);int cmp(const void*x, const void*y){ return (*(Road*)x).w>(*(Road*)y).w ? 1:-1;}int find(int x){ return x==p[x] ? x:(p[x]=find(p[x]));} /*错误:p[x]=find(x); */int main(){ int i, j, x, y; int tu, tv, tw, tf; while (1) { scanf("%d", &m); if (!m) break; n = m*(m-1)/2; for (i = 1; i <= m; ++i) p[i] = i; for (j = 0, i = 1; i <= n; ++i) { scanf("%d%d%d%d", &tu, &tv, &tw, &tf); if (!tf) /*只记录没有在修的路*/ { ++j; r[j].u = tu, r[j].v = tv; r[j].w = tw; } else { x = find(tu); y = find(tv); if (x != y) p[x] = y; } } printf("%d\n", kruskal(j)); } return 0;}int kruskal(int n){ int i, cost, x, y; qsort(r+1, n, sizeof(r[0]), cmp); cost = 0; for (i = 1; i <= n; ++i) { x = find(r[i].u); y = find(r[i].v); if (x != y) { cost += r[i].w; p[x] = y; } } return cost;}

转载于:https://www.cnblogs.com/JMDWQ/archive/2012/04/22/2464865.html

你可能感兴趣的文章
BOM浏览器对象模型
查看>>
Jq 遍历each()方法
查看>>
Android源码分析:Telephony部分–phone进程
查看>>
关于 redis.properties配置文件及rule
查看>>
WebService
查看>>
关于Java中重载的若干问题
查看>>
Java中start和run方法的区别
查看>>
二叉树_非递归先中后序_递归非递归求深度
查看>>
20181227 新的目标
查看>>
HDFS写流程
查看>>
生产环境服务器环境搭建+ 项目发布
查看>>
js按条件分类json数组,并合计同组数据(一维转换为二维)
查看>>
Exp6 信息搜集与漏洞扫描
查看>>
redis4安装
查看>>
使用命令wsimport构建WebService客户端[转]
查看>>
第八遍:链接详解
查看>>
Qt5.5 使用smtp发邮件的各种坑
查看>>
js奇葩错误 字符串传递问题
查看>>
人之初,性本恶
查看>>
springboot 端口号
查看>>