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. TFS 服务器更换后工作区无法绑定

    需要删除工作区,删除命令如下 tf workspace /delete 工作区名;创建的用户 /server:TFS服务器 例 tf workspace /delete WHQ-PC;whq /ser ...

  2. 关于UNION和UNION ALL的区别

    今天在运行程序的时候发现个问题,就是计算和的时候两条数据一样的话自动去除重复的,可是我这个程序需要重复的数据也算进来呀,然后就找原因,最后在sql语句中找到了是union和union all的问题,简 ...

  3. 【转】iOS-Core-Animation-Advanced-Techniques(二)

    原文: http://www.cocoachina.com/ios/20150104/10816.html 视觉效果和变换 (四)视觉效果 嗯,园和椭圆还不错,但如果是带圆角的矩形呢? 我们现在能做到 ...

  4. 浅析CSS中的haslayout

    作为一名web开发人员,最大的希望不是自己的水平有多高,而是希望浏览器厂家能够统一标准,相信任何一个只要是接触过web程序开发的人员都有那样的感受,就是浏览器之间的兼容性问题总是让我们的工作平添诸多的 ...

  5. LeetCode OJ -Happy Number

    题目链接:https://leetcode.com/problems/happy-number/ 题目理解:实现isHappy函数,判断一个正整数是否为happy数 happy数:计算要判断的数的每一 ...

  6. 头一回发博客,来分享个有关C++类型萃取的编写技巧

    废话不多说,上来贴代码最实在,哈哈! 以下代码量有点多,不过这都是在下一手一手敲出来的,小巧好用,把以下代码复制出来,放到相应的hpp文件即可,VS,GCC下均能编译通过 #include<io ...

  7. gzip命令

    http://www.cnblogs.com/peida/archive/2012/12/06/2804323.html 减 少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时, ...

  8. 关于Function()函数对象的那些小九九

    概念:首先,函数是一种特殊类型的数据,函数也是数据类型的一种,实际上函数也是一种对象,函数对象的内建构造器是Function(); 函数的几种创建方式: 函数声明法: function sum(a,b ...

  9. php 上传视频的代码

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  10. YII 小部件 解决多选按钮和单选按钮不在同一水平上 'separator'=>'&nbsp;'

    主要是添加separator属性(这里)$hoddy,$sex在控制器里面定义的数组,然后render传过来的 <td>          <?php echo $form-> ...