hdu 1879 继续畅通工程 最小生成树
继续畅通工程
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
当N为0时输入结束。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define inf 0x3f3f3f3f
int map[100][100];
int s[100],vis[100];
int n,m;
int prim()
{int i,j,t,p,min,cnt,minpos;int ans=0;cnt=0;vis[1]=1;s[cnt++]=1;while(cnt<n){t=cnt;min=inf;for(i=0;i<t;i++){p=s[i];for(j=1;j<=n;j++){if(!vis[j]&&map[p][j]<min){min=map[p][j];minpos=j;}}}ans+=min;s[cnt++]=minpos;vis[minpos]=1;}return ans;
}
int main()
{int i,sum;while(~scanf("%d",&n)&&n){memset(vis,0,sizeof(vis));memset(map,inf,sizeof(map));int b,c,d,sta;m=n*(n-1)/2;for(i=0;i<m;i++){scanf("%d%d%d%d",&b,&c,&d,&sta);if(sta==0)map[b][c]=map[c][b]=d;elsemap[b][c]=map[c][b]=0;}sum=prim();printf("%d\n",sum);}return 0;
}
2、时间复杂度O(n^2)
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define inf 0x3f3f3f3f
int adj[100];
int vis[100];
int nearest[100];
int map[100][100];
int n,m;
int prim()
{int i,j,min;int ans=0;vis[1]=1;for(i=2;i<=n;i++){nearest[i]=map[1][i];adj[i]=1;}int cnt=n-1;while(cnt--){min=inf;j=1;for(i=1;i<=n;i++){if(!vis[i]&&nearest[i]<min){min=nearest[i];j=i;}}ans+=map[j][adj[j]];vis[j]=1;for(i=1;i<=n;i++){if(!vis[i]&&map[i][j]<nearest[i]){nearest[i]=map[i][j];adj[i]=j;}}}return ans;
}
int main()
{int i;while(~scanf("%d",&n)&&n){int b,c,d,sta;memset(vis,0,sizeof(vis));memset(map,inf,sizeof(map));m=n*(n-1)/2;for(i=0;i<m;i++){scanf("%d%d%d%d",&b,&c,&d,&sta);if(sta==0)map[b][c]=map[c][b]=d;elsemap[b][c]=map[c][b]=0;}int sum=prim();printf("%d\n",sum);}return 0;
}
Kruskal算法:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct point
{int u;int v;int w;
}a[5000];
bool comp(point a1,point a2)
{return a1.w<a2.w;
}
int n,m,father[100],t,cnt;
int find(int x)
{if(father[x]!=x)father[x]=find(father[x]);return father[x];
}
void merge(int x,int y)
{int p=find(x);int q=find(y);if(p<q)father[q]=p;elsefather[p]=q;
}
void initial()
{for(int i=1;i<=n;i++)father[i]=i;
}
int Kruskal()
{int ans=0;sort(a,a+m,comp);for(int i=0;i<m;i++){int x=find(a[i].u);int y=find(a[i].v);if(x!=y){ans+=a[i].w;merge(x,y);}}return ans;
}
int main()
{int i,sum,b,c,d,sta;while(~scanf("%d",&n)&&n){initial();m=n*(n-1)/2;for(i=0,t=0;i<m;i++){scanf("%d%d%d%d",&b,&c,&d,&sta);a[i].u=b;a[i].v=c;if(sta==0)a[i].w=d;elsea[i].w=0;}sum=Kruskal();printf("%d\n",sum);}return 0;
}
hdu 1879 继续畅通工程 最小生成树相关推荐
- hdu 1879 继续畅通工程 (最小生成树)
继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU 1879 继续畅通工程 最小生成树
继续畅通工程 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description ...
- hdu 1879 继续通畅工程(最小生成树)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1879 /************************************************* ...
- HDU - 1879 继续畅通工程 【最小生成树 - 升级】
Description 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计表,表中列出了任 ...
- hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)
还是畅通工程 Time Limit: 4000/2 ...
- hdu 1879 继续畅通工程
最小生成树入门题,和纯粹的裸题有些区别,题目中有些道路已经存在,不需要建造,答案是求最后建造的总费用,不要把已经有的道路的权值算进去 //kruskal算法已有的边权植赋为0 //用SORT排序,用并 ...
- hdu 1233 还是畅通工程(最小生成树的Prim和Kruskal两种算法的c++实现)(prim算法详解)...
赤裸裸滴最小生成树(MST),刚学的玩意,用两种方法熟练一下.(都是greedy) Kruskal方法:先对边按照代价非递减排序,再不断添加边且不产生环路,当边数=点数-1结束.判断加入(v,w)是否 ...
- HDU 1233 还是畅通工程(最小生成树 Prim+Kruskal)
原题地址 http://acm.hdu.edu.cn/showproblem.php?pid=1233 题意:(最小生成树裸题)有N个村庄,给出村庄两两之间的距离,要求铺设公路,使得任何两个村庄间都可 ...
- 【HDU - 1863】 畅通工程(并查集+最小生成树)
题干: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的 ...
最新文章
- 中文速读微生物组(宏基因组)前沿文献——这个可以有
- Java学习(16)--System 类/Date 类/ Calendar类
- How does a relational database work
- P5357 【模板】AC自动机(二次加强版) fail树
- ad17编辑界面怎么检查未连线_软件账务处理流程之——凭证审核与检查
- 五、PHP框架Laravel学习笔记——回退、当前路由、单行为
- 爬虫新宠requests_html 带你甄别2019虚假大学 #华为云·寻找黑马程序员#
- cheaklist 人机交互界面_10个人机交互系统及界面的设计方案
- 三星Galaxy S21系列通过认证:终究还是要学苹果“保护环境”?
- JAVA中的MDC类_CMake - 用/ MT而不是/ MD编译
- JS中字串转参数用的false/true
- python快速编辑入门答案_1.1、Python快速入门(0529)
- 公众号题库搜题对接(提供免费接口)
- Selenium 批量执行url(附完整代码)
- 《老路用得上的商学课》36-40学习笔记
- 国产化飞腾CPU主板安装统信专业版桌面OS,以及统信OS如何进root用户
- getline 两次回车 解决办法
- 电信流失客户特征分析及预测
- 杭电计算机考研复试经验帖
- 理论篇五: 如何设计游戏棋牌平台 - 服务端 - 棋牌设计 - 一切皆步骤