HDU 1863 畅通工程(Prim,Kruskal,邻接表模板)
畅通工程
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 35957 Accepted Submission(s): 15971
行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,全部输入结束,相应的结果不要输出。
1 2 1
1 3 2
2 3 4
1 3
2 3 2
0 100
?
- #include<iostream>
- #include<cstring>
- #include<algorithm>
- #include<string>
- #include<cmath>
- #define inf 0x3f3f3f3f
- using namespace std;
- int d[];
- struct node
- {
- int v;
- int c;
- int nxt;
- }e[];
- int head[];
- int cnt=;
- bool book[];
- void add(int u,int v,int c)
- {
- e[cnt].c=c;
- e[cnt].v=v;
- e[cnt].nxt=head[u];
- head[u]=cnt++;
- }
- int main()
- {
- int n,m;
- while(cin>>m>>n)
- {
- if(m==) break;
- cnt=;
- memset(d,inf,sizeof(d));
- memset(head,-,sizeof(head));
- memset(book,,sizeof(book));
- for(int i=;i<=m;i++)
- {
- int x,y,z;
- cin>>x>>y>>z;
- add(x,y,z);
- add(y,x,z);
- }
- for(int i=head[];i!=-;i=e[i].nxt)
- {
- if(d[e[i].v]>e[i].c)
- {
- d[e[i].v]=e[i].c;
- }
- }
- d[]=;
- book[]=;
- bool f=;
- int sum=;
- for(int i=;i<=n-;i++)
- {
- int k=-;
- int min=inf;
- for(int j=;j<=n;j++)
- {
- if(!book[j]&&min>d[j])
- {
- min=d[j];
- k=j;
- }
- }
- if(k==-)
- {
- f=;
- break;
- }
- book[k]=;
- sum+=d[k];
- for(int j=head[k];j!=-;j=e[j].nxt )
- {
- int x=e[j].v;
- int c=e[j].c;
- if(!book[x]&&d[x]>c)
- {
- d[x]=c;
- }
- }
- }
- if(!f) cout<<"?"<<endl;
- else cout<<sum<<endl;
- }
- return ;
- }
kruskal
- #include<iostream>
- #include<cstring>
- #include<algorithm>
- #include<string>
- #include<cmath>
- #define inf 0x3f3f3f3f
- using namespace std;
- int pra[];
- struct node
- {
- int u,v,c;
- }e[];
- bool cmp(node x,node y)
- {
- return x.c<y.c;
- }
- int find(int x)
- {
- if(pra[x]==x) return x;
- else return pra[x]=find(pra[x]);
- }
- void unite(int x,int y)
- {
- x=find(x);
- y=find(y);
- if(x==y) return;
- else
- {
- pra[x]=y;
- }
- }
- int main()
- {
- int n,m;
- while(cin>>m>>n)
- {
- if(m==) break;
- for(int i=;i<=n;i++) pra[i]=i;
- for(int i=;i<=m;i++)
- {
- cin>>e[i].u>>e[i].v>>e[i].c;
- }
- sort(e+,e+m+,cmp);
- int sum=;
- int k=;
- for(int i=;i<=m;i++)
- {
- int x=e[i].u;x=find(x);
- int y=e[i].v;y=find(y);
- if(x!=y)
- {
- unite(x,y);
- k++;
- sum+=e[i].c;
- }
- if(k==n-) break;
- }
- if(k==n-) cout<<sum<<endl;
- else cout<<"?"<<endl;
- }
- return ;
- }
HDU 1863 畅通工程(Prim,Kruskal,邻接表模板)的更多相关文章
- hdu 1863 畅通工程 (prim)
畅通工程Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- hdu 1863 畅通工程 (并查集+最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1863 畅通工程 Time Limit: 1000/1000 MS (Java/Others) M ...
- HDU 1863 畅通工程(Prim算法求解MST)
题目: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本.现 ...
- HDU 1863 畅通工程 -Kruskal模版
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 1863 畅通工程(Kruskal+并查集)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- hdu 1863 畅通工程 (并查集 、 kruskal)
畅通工程Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU 1863 畅通工程(Kruskal)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- <hdu - 1863> 畅通工程 并查集和最小生成树问题
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1863 Problem Description: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以 ...
- hdu 1863 - 畅通工程(MST)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
随机推荐
- Android系统属性SystemProperties在应用层的用法【转】
本文转载自:https://blog.csdn.net/lilidejing/article/details/53288243 如果你看到这篇文章了,说明你已经是资深程序员,会发现整个Android系 ...
- [Android]libpng error: Not a PNG file错误解决
我在将以前在Eclipse中写的项目import到android studio中后,出现了 AAPT err(Facade for 157667509): libpng error: Not a PN ...
- 山东省第六届ACM省赛 H---Square Number 【思考】
题目描述 In mathematics, a square number is an integer that is the square of an integer. In other words, ...
- PHP获取MySQL执行sql语句的查询时间
//计时开始 runtime(); //执行查询 mysql_query($sql); //计时结束. echo runtime(1); //计时函数 function runtime($mode=0 ...
- 按F12 IE浏览器的开发工具打不开解决方法
在电脑的任务栏中选中开发人员工具窗体右击,出现以下页面: 点击移动菜单项,然后用键盘的上下左右键移动,直到开发人员工具的最小化窗体出现:
- HDU 2480 Steal the Treasure (并查集+贪心)
题意:给你n个点,m条边,包括有向边与无向边,每条边都有一个权值.在每个点上都有一个人,他可以走与这个点直接相连的所有边中任意一条边一次,并且得到这个权值,就不能走了,注意这条路也只能被一个人走.问最 ...
- UOJ132 【NOI2015】小园丁与老司机
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- Java编程思想 两个主函数
//: initialization/DynamicArray.javapackage initialization; /* Added by Eclipse.py */// Array initia ...
- C/C++输入数组
; printf("please enter the number:\n"); scanf("%d",&n); int *number=new int[ ...
- Guest CPU model configuration in libvirt with QEMU/KVM
每个hypervisor对于guest能看到的cpu model定义都不同,Xen 提供host pass through,所以guest能看到的cpu和host完全相同. QEMU/KVM中gues ...