原题链接

Prim(点归并)

//异或运算:相同为假,不同为真
#include<cstdio>
#include<algorithm>
#define maxn 105
using namespace std;
int n,m,sum,flag;
int fa[maxn];
struct Edge
{
int u,v,w;
bool operator<(const Edge &cmp)const{
return w<cmp.w;
}
}edge[maxn*maxn>>]; int Findset(int x)
{
if(fa[x]==x) return fa[x]=x;
else return fa[x]=Findset(fa[x]);
}
int main()
{
while(scanf("%d",&n),n){
m=(n-)*n/;
for(int i=;i<=n;i++)
fa[i]=i;
for(int i=;i<m;i++){
scanf("%d%d%d%d",&edge[i].u,&edge[i].v,&edge[i].w,&flag);
if(flag)
fa[edge[i].u]=edge[i].v;
}
sort(edge,edge+m);
sum=;
for(int i=;i<m;i++){
int x=Findset(edge[i].u);
int y=Findset(edge[i].v);
if(x!=y){
fa[x]=y;
sum+=edge[i].w;
}
}
printf("%d\n",sum);
}
}

参考链接

Kruscal(边归并)

#include<cstdio>
#include<cstring>
#define INF 0x3f3f3f3f
#define maxn 105
int i,j,k,n,m,min,sum;
int lowcost[maxn],visit[maxn];
int graph[maxn][maxn];
void Prim()
{
sum=;
memset(visit,,sizeof(visit));
visit[]=;
for(i=;i<=n;i++)
lowcost[i]=graph[][i];
for(i=;i<=n;i++){
min=INF;
for(j=;j<=n;j++){
if(!visit[j]&&min>lowcost[j]){
min=lowcost[j];
k=j;
}
}
sum+=lowcost[k];
visit[k]=;
for(j=;j<=n;j++){
if(!visit[j]&&lowcost[j]>graph[k][j])
lowcost[j]=graph[k][j];
}
}
} int main()
{
int a,b,c,d;
while(scanf("%d",&n),n){
m=(n-)*n/;
memset(graph,INF,sizeof(graph));
while(m--){
scanf("%d%d%d%d",&a,&b,&c,&d);
if(d) graph[a][b]=graph[b][a]=;
else graph[a][b]=graph[b][a]=c;
}
Prim();
printf("%d\n",sum);
}
return ;
}

HDU 1879 继续畅通工程(Prim||Kruscal模板题)的更多相关文章

  1. HDU 1879 继续畅通工程 (Prim(普里姆算法)+Kruskal(克鲁斯卡尔))

    继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  2. hdu 1879 继续畅通工程

    /************************************************************************/ /* hdu 1879 继续畅通工程 Time L ...

  3. hdu 1879 继续畅通工程 (并查集+最小生成树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1879 继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    ...

  4. hdu 1233 还是畅通工程 (prim, kruskal)

    还是畅通工程Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  5. HDU 1874 畅通工程续(模板题——Floyd算法)

    题目: 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰 ...

  6. HDU 1879 继续畅通工程(最小生成树)

    省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经 ...

  7. hdu 1879 继续畅通工程 (最小生成树)

    继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  8. HDU 1879 继续畅通工程(Kruskra)

    继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  9. (step6.1.1)hdu 1879(继续畅通工程——最小生成树、kruscal)

    题目大意:输入一个整数n,表示有n个村庄.在接下来的n(n-1)/2行中,每行有4个整数begin  end  weight  flag.分别表示从begin到end之间可以连通 ,他们之间的费用为w ...

随机推荐

  1. 如何才能知道外线是FSK还是DTMF制式?

    在直线上接上来电显示话机,然后用手机或其他电话拨接电话的外线号码. 1.如果是先振铃后来显,就是FSK制式. 2.如果先送来显,再振铃或来显和振铃同时响应,就是DTMF制式 交换机默认配置是FSK制式 ...

  2. linux系统UDP的socket通信编程2

    UDP套接字编程范例: server端代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...

  3. tableview随笔

    //获得row NSInteger row = [[self.treeTableViewindexPathForCell:(UITableViewCell *)[[[notification.user ...

  4. c#截取图片

    简单的保存数据流 <input name="upImg" style="width: 350px; height: 25px;" size="3 ...

  5. 【Java nio】Blocking nio2

    package com.slp.nio; import org.junit.Test; import java.io.File; import java.io.IOException; import ...

  6. angular -- 无刷新做分页

    无刷新做分页参考地址: http://www.jq22.com/demo/angular201707111100/ 示例代码: <!DOCTYPE html> <html lang= ...

  7. oneThink添加成功,返回到当前请求地址!

    其实没什么,就一行代码: $this->success('已采纳',$_SERVER['HTTP_REFERER']);

  8. log4j 设置将生成的日志进行gz压缩并删除过期日志

    1.准备jar  :log4j-1.2.17.jar,commons-logging-1.2.jar,这2个就可以了,其他关于日志的jar包就不要加进来了,在优先级上会有冲突. 2.定义一个类,继承R ...

  9. 【转载】web开发中 web 容器的作用(如tomcat)

    我们讲到servlet可以理解服务器端处理数据的java小程序,那么谁来负责管理servlet呢?这时候我们就要用到web容器.它帮助我们管理着servlet等,使我们只需要将重心专注于业务逻辑. 什 ...

  10. 常用meta标签及说明

    1.charset   定义文档的字符编码 例如: <meta charset="UTF-8"> 2. name  把 content 属性关联到一个名称,其属性有   ...