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. 关于百度 UEditor的使用

    1.文件路径的配置: 注意:在页面上需要指定editor文件所在的路径,否则报错 后面有时间,再说说 kindEditor和  bootstrap3的summernote的  Editor,  fck ...

  2. treeview右键添加新节点

    private void advTree1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Righ ...

  3. Solaris用户管理(一):用户与组管理

    Solaris用户管理(一):用户与组管理  2008-07-01 09:19 用户管理是系统管理的基础.Solaris中不但支持传统Unix所支持的用户和组的概念,还从Solaris 8开始引入了基 ...

  4. Elasticsearch学习1--head插件安装

    1.简要介绍 elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序. 2.最近尝试学习elasticsearch,查了一些资料,但 ...

  5. 【转】jquery两稳定版本比较~~

    博客分类: Web前端 jquery  jquery历经了多个版本的更新,版本上的比较貌似没什么必要性,一般来说新的版本会比旧的版本各方面都略有提升,但由于新版中增加了各种新的功能,难免会引起bug的 ...

  6. Xcode 使用自定义字体

    添加对应的字体(.ttf或.odf)到工程的resurce,使用cocos2d中的FontLabel库,FontLabel继承于UILabel,象UILabel一样使用就好了 fontName直接使用 ...

  7. 【转】ThinkPHP中数据库操作返回值总结

    Thinkphp中的Think\Model类提供了数据库的基本CURD(Create.Update.Read及Delete),通过该类可以很便捷的进行操作.Model类及扩展类主要的方法有: Crea ...

  8. php基础知识【函数】(6)mysql数据库

    一.连接和关闭 1.mysql_connect('example.com:3307', 'root', '123456') --打开一个到 MySQL 服务器的非永久连接 2.mysql_pconne ...

  9. ajax验证用户名和找回密码参考

    // JavaScript Document function chkname(form){ var user = form.user.value; if(user == ''){ alert('请输 ...

  10. du和df不一致的解决方法

    df:disk free,统计的是当前系统中空闲的磁盘du:disk usage,统计的是正在使用的空闲的磁盘.如果一个文件被删除之后,使用这个文件的进程未重启,则会出现df和du不一致的情况. 解决 ...