最小生成树(kruskal模版 Prim模板)
http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2144&cid=1186
最小生成树,最重要的是了解思想
稠密图用Prim,稀疏图用Kruskal
K(每次找最小的边连接,一条边连接两个点,所以单路就可以了)

1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4 int bin[110];
5 struct node
6 {
7 int u,v,w;
8 }q[10001];
9
10 int cmp(const void *a,const void *b)//按距离从小到大排序
11 {
12 return (*(node *)a).w-(*(node *)b).w;
13 }
14 int find(int a)
15 {
16 if(a==bin[a])
17 return a;
18 else
19 bin[a]=find(bin[a]);
20 };
21 int main()
22 {
23 int n,m,i,j,sum,num;
24 int x,y;
25 while(~scanf("%d%d",&n,&m))
26 {
27 sum=0; num=0;
28 for(i=1; i<=n; i++)
29 bin[i]=i;
30 for(i=0; i<=m-1; i++)
31 scanf("%d%d%d",&q[i].u,&q[i].v,&q[i].w);
32 qsort(q,m,sizeof(q[0]),cmp);
33 这是重点思想 for(i=0; i<=m-1; i++)
34 {
35 x=find(q[i].u); y=find(q[i].v);
36 if(x!=y) //检查是否连通
37 {
38 sum+=q[i].w;//没连通的话加上距离
39 num++; //城市+1
40 bin[x]=y;
41 }
42 if(num==n-1)
43 break;
44 }
45 printf("%d\n",sum);
46 }
47 }

- #include <stdio.h>
- #include <string.h>
- #define N 1000001
- int map[110][110];
- int vis[110];
- int dis[110];
- int n,m;
- void prim()
- {
- int ans=0;
- int i,j;
- memset(vis,0,sizeof(vis));
- memset(dis,0,sizeof(dis));
- for(i = 1; i <= n; i++)
- dis[i] = map[1][i];
- vis[1] = 1;
- for(i = 1; i <= n-1; i++)
- {
- int pos;
- int min;
- min = N;
- for(j = 1; j <= n; j++)
- {
- if(vis[j]==0&&min>dis[j])
- {
- pos=j;
- min=dis[j];
- }
- }
- vis[pos] = 1;
- ans += min;
- for(j = 1; j <= n; j++)
- {
- if(vis[j]==0&& dis[j]>map[pos][j])
- dis[j]=map[pos][j];
- }
- }
- printf("%d\n",ans);
- return ;
- }
- int main()
- {
- int a,b,c;
- int i,j;
- while(scanf("%d %d",&n,&m)!=EOF)
- {
- for(i=1; i<=n; i++)
- {
- for(j=1; j<=n; j++)
- {
- map[i][j]=N;
- map[j][i]=N;
- }
- map[i][i]=0;
- }
- for(i=1;i<=m;i++)
- {
- scanf("%d%d%d",&a,&b,&c);
- if(c<map[a][b])
- {
- map[a][b]=c;
- map[b][a]=c;
- }
- }
- prim();
- }
- return 0;
- }
最小生成树(kruskal模版 Prim模板)的更多相关文章
- 最小生成树——Kruskal与Prim算法
最小生成树——Kruskal与Prim算法 序: 首先: 啥是最小生成树??? 咳咳... 如图: 在一个有n个点的无向连通图中,选取n-1条边使得这个图变成一棵树.这就叫“生成树”.(如下图) 每个 ...
- 关于最小生成树 Kruskal 和 Prim 的简述(图论)
模版题为[poj 1287]Networking. 题意我就不说了,我就想简单讲一下Kruskal和Prim算法.卡Kruskal的题似乎几乎为0.(●-`o´-)ノ 假设有一个N个点的连通图,有M条 ...
- 最小生成树 kruskal算法&prim算法
(先更新到这,后面有时间再补,嘤嘤嘤) 今天给大家简单的讲一下最小生成树的问题吧!(ps:本人目前还比较菜,所以最小生成树最后的结果只能输出最小的权值,不能打印最小生成树的路径) 本Tianc在刚学的 ...
- 最小生成树kruskal 知识点讲解+模板
0.前言 因为本人太蒟了 我现在连NOIP的初赛都在胆战心惊 并且我甚至连最小生成树都没有学过 所以这一篇博客一定是最详细的QAQ 哈哈 请您认真看完如果有疏漏之处敬请留言指正 感谢! Thanks♪ ...
- 最小生成树算法(Prim,Kruskal)
边赋以权值的图称为网或带权图,带权图的生成树也是带权的,生成树T各边的权值总和称为该树的权. 最小生成树(MST):权值最小的生成树. 生成树和最小生成树的应用:要连通n个城市需要n-1条边线路.可以 ...
- 稀疏图(邻接链表),并查集,最短路径(Dijkstra,spfa),最小生成树(kruskal,prim)
全部函数通过杭电 1142,1162,1198,1213等题目测试. #include<iostream> #include<vector> #include<queue ...
- 稠密图(邻接矩阵),并查集,最短路径(Dijkstra,spfa),最小生成树(kruskal,prim)
全部函数通过杭电 1142,1162,1198,1213等题目测试. #include<iostream> #include<vector> #include<queue ...
- 最小生成树(Kruskal和Prim算法)
关于图的几个概念定义: 关于图的几个概念定义: 连通图:在无向图中,若任意两个顶点vi与vj都有路径相通,则称该无向图为连通图. 强连通图:在有向图中,若任意两个顶点vi与vj都有路 ...
- 1.1.2最小生成树(Kruskal和Prim算法)
部分内容摘自 勿在浮沙筑高台 http://blog.csdn.net/luoshixian099/article/details/51908175 关于图的几个概念定义: 连通图:在无向图中,若任意 ...
随机推荐
- Material Design系列第五篇——Working with Drawables
Working with Drawables This lesson teaches you to Tint Drawable Resources Extract Prominent Colors f ...
- activeMQ---->ActiveMQ的使用(一)
这里通过一个入门的案例来体会一下ActiveMQ的作用以及使用方法.你要做一个不动声色的大人了.不准情绪化,不准偷偷想念,不准回头看.去过自己另外的生活.你要听话,不是所有的鱼都会生活在同一片海里. ...
- GitHub 在使用命令行 git push 时报错:The requested URL returned error: 403
使用 git 的命令行向 GitHub 提交的时候,报错: [Young@localhost OtherLang]$ git push origin master error: The request ...
- linux strace 命令详解
简介 strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核 ...
- 跟bWAPP学WEB安全(PHP代码)--SSL(Server-Side-Include)漏洞
什么是Server-Side-Include漏洞 服务端包含漏洞是指发送指令到服务器,服务器会将指令运行完,把运行结果包含在返回文件中发送给你.利用这种漏洞可以获取服务端的信息甚至执行命令,这样的指令 ...
- Protocol Buffers java
Protocol Buffers https://developers.google.cn/protocol-buffers/ 一. 例 addressbook.proto. syntax = &qu ...
- 一辈子只有1次成为BAT的机会,你如何把握?
本文转自:http://www.fmi.com.cn/index.php?m=content&c=index&a=show&catid=9&id=614308 感谢作者 ...
- 如何使用Jquery 引入css文件
如何使用Jquery 引入css文件: $("head").append("<link>");var toolbarCss = $("he ...
- 美团店铺评价语言处理以及文本分类(logistic regression)
美团店铺评价语言处理以及分类(LogisticRegression) 第一篇 数据清洗与分析部分 第二篇 可视化部分, 第三篇 朴素贝叶斯文本分类 本文是该系列的第四篇 主要讨论逻辑回归分类算法的参数 ...
- [分布式系统学习]阅读笔记 Distributed systems for fun and profit 之四 Replication 拷贝
阅读http://book.mixu.net/distsys/replication.html的笔记,是本系列的第四章 拷贝其实是一组通信问题,为一些子问题,例如选举,失灵检测,一致性和原子广播提供了 ...