Agri Net POJ1258 && Constructing Roads POJ2421
题意,在给出的图中,使用最小花费的边,使这个图仍然连通。
#include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int maxn=10005; int head[maxn]; int n,len=0,counter; long long ans; struct node{ int v,cost,u; //操作符的重写默认是小于等于 bool operator < (const node& tmp) const{ return cost< tmp.cost; } }gra[maxn]; struct BingCha{ //并查集 int father[105]; void initial(){ //初始化不要忘记 for(int i=1;i<=n;i++){ father[i]=i; } } int getfather(int v){ if(father[v]==v)return v; return father[v]=getfather(father[v]); //状态压缩 } bool findtwo(int a,int b){ //看是否是同根的 return getfather(a)==getfather(b); } void unioned(int a,int b){ int fa=father[a],fb=father[b]; father[fa]=fb; } }jihe; void addedge(int u,int v,int cost){ gra[len].u=u; gra[len].v=v; gra[len].cost=cost; len++; } void init(){ len=0; counter=1;ans=0; int x; memset(head,-1,sizeof(head)); //memset gra? for(int i=1;i<=n;i++){//add the edges for(int j=1;j<=n;j++){ scanf("%d",&x); if(i<j){ addedge(i,j,x); } } } } int main(){ while(scanf("%d",&n)!=EOF){ init(); sort(gra,gra+len); //已经有序,那么从小值开始选边添加即可,也保证了最优结果 int idx=0; jihe.initial(); while(counter<n || idx<len){ if(!jihe.findtwo(gra[idx].u,gra[idx].v)){ //如果不同根,就选择这条边,执行更新操作 ans+=gra[idx].cost; counter++; jihe.unioned(gra[idx].u,gra[idx].v); } idx++; } printf("%d\n",ans); } }
2421 也是裸的mst:只要把已经建了的作为输入先处理一下就好了。
#include <cstdio> #include <algorithm> #include <cstring> using namespace std; ; int n,len,counter; long long ans; struct node{ int v,cost,u; bool operator < (const node& tmp) const{ return cost< tmp.cost; } }gra[maxn*(maxn-)>>]; struct BingCha{ ]; void initial(){ ;i<=n;i++){ father[i]=i; } } int getfather(int v){ if(father[v]==v)return v; return father[v]=getfather(father[v]); } bool findtwo(int a,int b){ return getfather(a)==getfather(b); } void unioned(int a,int b){ int fa=getfather(a),fb=getfather(b); father[fa]=fb; } }jihe; void addedge(int u,int v,int cost){ gra[len].u=u; gra[len].v=v; gra[len].cost=cost; len++; } int findxy(int x,int y){ if(x>y){int z=y;y=x;x=z;} ,id=; ;i<x;i++){ id+=j--; } y-=x;// here!!! id+=y; return id; } void init(){ len=; counter=;ans=; jihe.initial(); int x,q,y; //memset gra? ;i<=n;i++){//add the edges ;j<=n;j++){ scanf("%d",&x); if(i<j){ addedge(i,j,x); } } } scanf("%d",&q); ;i<=q;i++){ scanf("%d%d",&x,&y); ; if(!jihe.findtwo(gra[idx].u,gra[idx].v)){ counter++; jihe.unioned(gra[idx].u,gra[idx].v); } } } int main(){ while(scanf("%d",&n)!=EOF){ init(); sort(gra,gra+len); ; while(counter<n){//|| idx<=len if(!jihe.findtwo(gra[idx].u,gra[idx].v)){ ans+=gra[idx].cost; counter++; jihe.unioned(gra[idx].u,gra[idx].v); } idx++; } printf("%d\n",ans); } }
Agri Net POJ1258 && Constructing Roads POJ2421的更多相关文章
- HDU1102&&POJ2421 Constructing Roads 2017-04-12 19:09 44人阅读 评论(0) 收藏
Constructing Roads Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) ...
- POJ2421 Constructing Roads
Constructing Roads 这道题很水,就是一个裸的最小生成树,最不过把已经连接的节点的值再设为0. 代码: #include<cstdio> #include<cstri ...
- Constructing Roads——F
F. Constructing Roads There are N villages, which are numbered from 1 to N, and you should build som ...
- Constructing Roads In JGShining's Kingdom(HDU1025)(LCS序列的变行)
Constructing Roads In JGShining's Kingdom HDU1025 题目主要理解要用LCS进行求解! 并且一般的求法会超时!!要用二分!!! 最后蛋疼的是输出格式的注 ...
- [ACM] hdu 1025 Constructing Roads In JGShining's Kingdom (最长递增子序列,lower_bound使用)
Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- HDU 1102 Constructing Roads
Constructing Roads Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- Constructing Roads (MST)
Constructing Roads Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- HDU 1025 Constructing Roads In JGShining's Kingdom(二维LIS)
Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- hdu--(1025)Constructing Roads In JGShining's Kingdom(dp/LIS+二分)
Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
随机推荐
- android 数据库的创建
主java package com.itheima.createdatabase; import android.app.Activity; import android.content.Contex ...
- Hibernate 拥有 Mybits 的SQL/HQL特性 (注解、XML两不误)
第一次写博客.文章有点渣,喜欢就看看,不喜欢路过点个赞. 效果:直接一条语句多种用法 FROM User A WHERE 1=1 <#if id??&g ...
- Spring boot 1.3.5 RELEASE 官方文档中文翻译--目录
说明: 打算利用闲暇时候翻译一下Spring boot的官方文档,翻译的版本是1.3.5 RELEASE. 做这件事的目的呢有四: 国内中文的Spring boot资料实在不多,希望能给后来人一点小小 ...
- 简介spring中MethodReplacer的用法
欢迎转载交流:个人博客地址http://www.cnblogs.com/shizhongtao/p/3468713.html org.springframework.beans.factory.sup ...
- 公交CPU卡原理
现在的公交卡已经开始逐步的采用IC卡(CPU卡?什么东东?),而且在国家交通部的推动下,开始了全国范围内的互联互通.以后,手里只用拿着一张卡,就可以走遍全国,而且如果支持在线充值的话,基本上就不用在车 ...
- lex&yacc4
yacc: we cannt use the $$ value dirictly. we need get it irrotly;
- iOS 非ARC基本内存管理系列 -手把手教你ARC——iOS/Mac开发ARC入门和使用(转)
手把手教你ARC——iOS/Mac开发ARC入门和使用 Revolution of Objective-c 本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流 ...
- angular $q服务的用法
Promise是一种和callback有类似功能却更强大的异步处理模式,有多种实现模式方式,比如著名的Q还有JQuery的Deffered. 什么是Promise 以前了解过Ajax的都能体会到回调的 ...
- sublime text2之js压缩-Js Minifier
一款基于Google Closure compiler压缩Js文件插件. 快捷键: Ctrl+Alt+M 当前文件内压缩Js代码(不推荐) Ctrl+Alt+Shift+M ...
- JavaScript笔记(二)——常用数组、字符串方法的应用
1.将字符串中的字符翻转,比如'hello',翻转成'olleh'. var arr=[]; function reverseString(str) { arr=str.split("&qu ...