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 ...
随机推荐
- 斯坦福机器学习视频笔记 Week9 异常检测和高斯混合模型 Anomaly Detection
异常检测,广泛用于欺诈检测(例如“此信用卡被盗?”). 给定大量的数据点,我们有时可能想要找出哪些与平均值有显着差异. 例如,在制造中,我们可能想要检测缺陷或异常. 我们展示了如何使用高斯分布来建模数 ...
- Oracle基本概念
1. 数据库和实例 什么是数据库,其实很简单,数据库就是存储数据的一种媒介.比如常用的文件就是一种,在Oracle10g中,数据的存储有好几种.第一种是文件形 式,也就是在你的磁盘中创建一批文件,然后 ...
- Kafka详解五:Kafka Consumer的底层API- SimpleConsumer
问题导读 1.Kafka如何实现和Consumer之间的交互?2.使用SimpleConsumer有哪些弊端呢? 1.Kafka提供了两套API给Consumer The high-level Con ...
- 2017 GDS 全球域名大会7月7日举行
2017年域名行业历经产业波澜,引发域名圈内对域名价值衍生及商业模式的探索.如今无论域名注册商.域名交易平台.域名拍卖平台都在寻找更好的商业模式,开启域名行业新航向. 7月,在中国域名之都厦门将掀起一 ...
- 更改jmeter发送邮件样式(转)
http://www.cnblogs.com/puresoul/p/5049433.html Jmeter默认的报告展示的信息比较少,如果出错了,不是很方便定位问题.由Jmeter默认报告优化这篇文章 ...
- djang-分页
分页 views from django.shortcuts import render,HttpResponse # Create your views here. from app01.model ...
- Java 框架
Netty: Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 也就是说,Netty ...
- The import javax.servlet.jsp.JspWriter cannot be resolved' error
Add servlet-api.jar and jsp-api.jar from Tomcat 6.0 library to ecipse project.
- 在express中提供静态文件笔记
在express中提供静态文件 要在express框架中提供静态文件,如:css.javascript等文件,就要使用到他的内置中间件功能express.static,将包含静态文件目录文件传递给ex ...
- python递归中的return"陷阱"
在做一道练习题(参照下篇博文<在当前目录下递归的查找包含指定字符串的文件>)的时候,发现函数中的return的值竟然是None,百思不得其解,尝试化繁为简,用以下的简单的代码验证了一下 问 ...