HDOJ 1233 (克鲁斯卡尔+并查集)

还是畅通工程

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 58011    Accepted Submission(s): 26354

Problem Description

某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。

Input

测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。
当N为0时,输入结束,该用例不被处理。

Output

对每个测试用例,在1行里输出最小的公路总长度。

Sample Input

3 1 2 1 1 3 2 2 3 4 4 1 2 1 1 3 4 1 4 1 2 3 3 2 4 2 3 4 5 0

Sample Output

3 5

这题我交了九遍,根本想不出哪儿错了,然后搜博客,发现别人用克鲁斯卡尔的都好巨大,

终于,我把juge()换到了ans+= 的后面,就ac了。

#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
struct node
{int a,b,w;
}f[6010];
int vis[5000];
bool cmp(node a,node b)
{return a.w<b.w;
}
int ans;
int n,m;
bool juge()
{for(int i=1;i<=m-1;i++)if(vis[i]!=vis[i+1])return 0;return 1;
}
int find(int x)
{int r=x,i=x,j;while(vis[r]!=r)r=vis[r];while(r!=i){j=vis[i];vis[i]=r;i=j;}return r;
}
int merg(int a,int b)
{a=find(a);b=find(b);if(a==b)return 0;if(a>b)vis[a]=b;if(a<b)vis[b]=a;return 1;
}
void kusal()
{ans=0;for(int i=1;i<=n;i++)vis[i]=i;for(int i=1;i<=m;i++){if(merg(f[i].a,f[i].b))ans+=f[i].w;if(juge())break;}
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);while(cin>>n,n!=0){vis[0]=-1;memset(f,0,sizeof f);memset(vis,0,sizeof vis);m=(n-1)*n/2;for(int i=1;i<=m;i++)cin>>f[i].a>>f[i].b>>f[i].w;sort(f+1,f+m+1,cmp);kusal();cout<<ans<<endl;}return 0;
}

 

转载于:https://www.cnblogs.com/37kiazz73/p/10316871.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql8优化实战

最近上线了一个10万户的管理系统&#xff0c;以前的客户没有这么多用户量&#xff0c;隐藏在代码中的慢sql渐渐显现出来了。 下面是我最近一周慢sql优化的总结&#xff1a; 多表sql优化、count sql优化、超过10 0000条limit优化一、多表sql优化 二、count sql优化 该表有21350…

工作315:uni-修改添加时间的逻辑

第一步 <u-form-item label"开始日期" prop"startTime" label-width"150"><u-input type"select" :select-open"start_time_show" v-model"form.startTime" placeholder"请选择" click"…

javaScript高程笔记--最佳实践

1.可维护性 《1》什么是可维护的代码 (1)可理解性 (2)直观性 (3)可适应性 (4)可扩展性 (5)可调试性 《2》代码约定 (1)可读性---适当的进行注释【函数和方法、大段代码、复杂的算法、Hack浏览器差异性】 (2)变量和函数名--语义化 (3)变量类型透明---一眼看出来是什么类型的数据…

工作316:uni-修改其他页面的时间逻辑

<u-form-item label"内容" prop"container" label-width"140"><input placeholder"请输入内容" v-model"form.content" type"texarea" /></u-form-item>定义富文本输入跳转有数值 form: {cont…

工作317:uni-修改其他页面整体样式

<template><view class"wrap"><u-form :model"form" :rules"rules" ref"uForm" :errorType"errorType"><u-form-item label"标题" class"label-left" style"margin-left:30r…

犯犯错

1.忘记初始化&#xff0c;程序卡卡卡 2.忘记加多组输入输出 3.Tarjan处理的时候总是把根节点忘掉 4.主函数用数组从0开始&#xff0c;函数中从1开始用&#xff0c;导致凉凉 5.hdu返回TLE的时候记得考虑越界问题 6.memset可能被卡&#xff0c;T的时候想一想&#xff01; 转载于:…

工作318:uni-切换tabber修改状态修饰

onLoad() {/* 调用市场信息的接口 分别 vuex获取 其他三项 */this.$u.api.getTreasureList({marketId: this.vuex_user.market_id,pageNo: 1,pageSize: 20,type:this.current1,releaseBureau:this.releaseBureau,name:this.name}).then(res > {if (res.data.code 200) {thi…

python--循环列表中字典元素

1. 目的&#xff1a; > 实现列表中字典kay - value的遍历 代码&#xff1a; 循环列表中字典元素info_list [{name:zhao,age:22,hight:171},{name:qian,age:23,hight:165},{name:sun,age:24,hight:148},{name:li,age:25,hight:166} ]# 第一种方式 index 0 while index <…

工作320:uni-预加载问题

<u-loadmore :status"status" />onReachBottom() {console.log(触底~~~~)if (this.pageNo > this.pages){this.status nomore;return;} this.status loading;this.pageNo this.pageNo;setTimeout(() > {this.getData()if (this.pageNo > this.page…

js的基本包装类型

基本包装类型(包装对象)&#xff1a; 先看下以下代码&#xff1a; var s1 "helloworld"; var s2 s1.substr(4); 上面我们说到字符串是基本数据类型&#xff0c;不应该有方法&#xff0c;那为什么这里s1可以调用substr()呢&#xff1f; 通过翻阅js权威指南第3.6章节…

字节跳动小程序支付接入

字节跳动小程序支付接入躺过的坑流程签名支付宝配置问题java福利躺过的坑 流程 小程序申请流程业务调用流程 签名 请求字节跳动接口的签名请求预下单返回验签 支付宝配置问题 流程 小程序申请流程 字节跳动小程序开通申请有个渠道秘钥类型选择RSA2和RSA&#xff0c;不管你选择…

工作322:uni-扩展运算符实现拼接合并操作

}).then(res>{if (res.data.code 200) {/* 进行合并操作 */this.tableData [...this.tableData, ...res.data.data.records]this.pages res.data.data.pagesconsole.log(1)console.log(res)}})

深入浅出JVM-内存模型

JVM内存模型总图程序计数寄存器Java虚拟机栈(JVM Stack)定义特点本地方法栈(Native Method Stack)Java堆(Java Heap)定义特点方法区定义特性可能抛出的异常直接内存(Direct Memory)Metaspace (元空间)元空间特色GC元空间内存分配模型从GC角度看Java堆JVM关闭总图 程序计数寄存器…

HDU 4487 Maximum Random Walk

Maximum Random Walk Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 756 Accepted Submission(s): 419 三维dp&#xff0c;一维的话根本没有办法开展&#xff0c;二维的话没办法保存当前位置或者最远位置&…

工作323:uni-获取时间参数

let date new Date();let dateYear date.getFullYear(); //获取年 let dateMonth date.getMonth(); //获取月 let dateDate date.getDate(); //获取当日let dateDay date.getDay(); //获取当日星期数let da…

深入浅出JVM-GC过程

深入浅出JVM-GC过程Minor GC对象进入老年代的4种情况Full GC空间分配担保Minor GC Minor GC过程 假设现在Heap内存大小为20M&#xff0c;其中年轻代为10M&#xff0c;老年代为10M&#xff0c;年轻代中Eden区6M&#xff0c;From区2M&#xff0c;To区2M&#xff0c;新创建的对象…

工作324:uni-时间过滤器封装

filters: {toChangeDate(e) {console.log(new Date(e).getFullYear())console.log(new Date(e).getMonth())console.log(new Date(e).getDay())let dateYear new Date(e).getFullYear(); //获取年 let dateMonth new Date(e).getMonth()1<10? 0 new Date(e).getMonth() …

[Python] 制作启动uiautomator2 的web版 uiautomatorviewer2 批处理启动

打开一个txt文件&#xff0c;复制如下命令进行并另存为为 .bat文件 1 echo on 2 echo 正在启动 uiautomatorviewer2 3 4 python -m weditor 5 6 echo off 注意&#xff1a;如果批处理里面有中文的话&#xff0c;一定要将 txt 文本的编码方式设置为 ANSI 编码进行保存&#xf…

工作325:uni-日期小于10补0

// 创建补0函数 function pZone (s) {return s < 10 ? 0 s : s }pZone(num)

深入理解java虚拟机--线程安全与锁优化

深入理解java虚拟机--线程安全与锁优化面向过程编程思想和面向对象编程思想java语言中的线程安全线程安全的实现方法锁优化面向过程编程思想和面向对象编程思想 面向过程编程思想&#xff1a;站在计算机的角度&#xff0c;以算法为核心&#xff0c;数据是客体&#xff0c;程序…