kruskal算法
 
#include <cstdio >
#include <algorithm>
using namespace std;
const int MaxSize=105;
int vest[200];
struct edge
{
    int u,v,w,op;
} E[10000];//代表的是边的数目不能定义为 E[MaxSize ]MaxSize是顶点数目//wa了无数次
 
bool cmp(edge a,edge b)
{
    return a.w<b.w;
}
int Find(int t)
{
    if(vest[t]==0)return t;
    else  return  Find(vest[t]);
}
bool HeBing(int a,int b)
{
    int x=Find(a);
    int y=Find(b);
    if(x!=y)
    {
        vest[x]=y;
        return true;
    }
    return false;
}
int main()
{
    int m;
    while(  scanf("%d",&m)&&m)
    {
        int n=m*(m-1)/2;
        for(int i=0; i<=m; i++)
            vest[i]=0;
        for(int i=1; i<=n; i++)
        {
            scanf("%d%d%d%d",&E[i].u,&E[i].v,&E[i].w,&E[i].op);
            if(E[i].op)HeBing(E[i].u,E[i].v);//先将修过的路合并起来,后面就不在修了
        }
        sort(E ,E+n+1,cmp);
        int  sum=0;
        for(int i=1; i<=n; i++)
        {
            if(HeBing(E[i].u,E[i].v) )//如果在一个集合内,就不再修路了
                if(E[i].op==0)sum+=E[i].w;
        }
        printf("%d\n",sum);
    }
        return 0;
    }
 
prim算法

#include <cstdio>
#define Max 0x3f3f3f3f
int N, Map[105][105], sum;

void prim()
{
int k, Min, dis[105], vis[105];
for(int i = 1; i <= N; i++) {
dis[i] = Map[1][i];
vis[i] = 0;
}
vis[1] = 1;
for(int i = 1; i < N; i++) {
Min = Max;
for(int j = 1; j <= N; j++)
if(!vis[j] && dis[j] < Min) {
k = j;
Min = dis[j];
}
vis[k] = 1;
sum += Min;
for(int j = 1; j <= N; j++) {
if(!vis[j] && dis[j] > Map[k][j])
dis[j] = Map[k][j];
}
}

}

int main()
{
int Start, End, Cost, Dis;
while(scanf("%d", &N) && N) {
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++)
Map[i][j] = Map[j][i] = Max;
for(int i = 1; i <= N * (N - 1) / 2; i ++) {
scanf("%d %d %d %d", &Start, &End, &Cost, &Dis);
if(!Dis) {Map[Start][End] = Map[End][Start] = Cost;}
else {Map[Start][End] = Map[End][Start] = 0;}
}
sum = 0;
prim();
printf("%d\n", sum);
}

return 0;
}

继续畅通工程(kruskal prim)的更多相关文章

  1. HDU.1233 还是畅通工程(Prim)

    HDU.1233 还是畅通工程(Prim) 题意分析 首先给出n,代表村庄的个数 然后出n*(n-1)/2个信息,每个信息包括村庄的起点,终点,距离, 要求求出最小生成树的权值之和. 注意村庄的编号从 ...

  2. 还是畅通工程(prim和kruskal)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1233 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    ...

  3. HDU 1863 畅通工程(Prim,Kruskal,邻接表模板)

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  4. hdu 1875 畅通工程再续(prim方法求得最小生成树)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1875 /************************************************* ...

  5. HDU 1863 畅通工程(Prim算法求解MST)

    题目: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本.现 ...

  6. HDU 1863 畅通工程 -Kruskal模版

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  7. hdu 1863 畅通工程(Kruskal+并查集)

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  8. HDU 1863 畅通工程(Kruskal)

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  9. HDU 1233 还是畅通工程(Kruskal)

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

  10. hdu_1875_畅通工程再续 prim和kruskal

    这个题是个典型的最小生成树的题目,但是刚开始怎么都过不了,后来发现两种写法都有疏忽,但是prim的到目前为止不懂为什么刚开始的不对,kruskal算法,并查集的初始条件从0开始写成从1开始了,所以已知 ...

随机推荐

  1. CSS控制鼠标滑过时的效果

    用css控制鼠标样式的语法如下:<span style="cursor:*">文本或其它页面元素</span>把 * 换成如下15个效果的一种: 下面是对这 ...

  2. 表达式:使用API创建表达式树(4)DynamicExpression

    DynamicExpression:表示动态操作.这个网上可见的资料少得可怜,但想到MVC和第三方的动态语言能在NET运行.好奇的倒腾了下 先声明两个类(有相同的方法和字段,但不是继承于同一接口的类) ...

  3. html multiple select option 分组

    普通html方式展示<select name="viewType" style="width: 100%;height: 300px;" multiple ...

  4. 给sqlserver配置内存参数

    操作环境:windows server 2003 R2 Enterprise Edition SP1 + 4G 内存 + Sqlsever 2005 在以上环境中,运行公司的ERP数据服务,sqlse ...

  5. Kettle 实现mysql数据库不同表之间数据同步——实验过程

    下面是试验的主要步骤: 在上一篇文章中LZ已经介绍了,实验的环境和实验目的. 在本篇文章中主要介绍侧重于对Kettle ETL的相应使用方法, 在这里LZ需要说明一下,LZ成为了避免涉及索引和表连接等 ...

  6. 类和ID选择器的区别

    学习了类选择器和ID选择器,我们会发现他们之间有很多的相似处,是不是两者可以通用呢?我们不要着急先来总结一下他们的相同点和不同点: 相同点:可以应用于任何元素不同点: 1.ID选择器只能在文档中使用一 ...

  7. 344. Reverse String(C++)

    344. Reverse String Write a function that takes a string as input and returns the string reversed. E ...

  8. AbstractFactory 模式

    ///////////////////////Product.h////////////// #ifndef _PRODUCT_H_ #define _PRODUCT_H_ class Abstrac ...

  9. cocos2dx解析lua table数据结构 简易版.

    之前一直用xml填配置, cocos2dx自带了xml解析接口, 非常方便. 但是, 接口好用也改变不了xml的结构字符太多, 书写麻烦, 乱七八糟的事实. 很早就想换lua, 无奈引擎没有现成接口, ...

  10. Linux抓包工具tcpdump详解

    tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpd ...