SDUT图结构练习——最小生成树
http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2144&cid=1186
这道题一开始是用prim算法做的,一直错一直错,后来问了帅郭改用Kruskal做才对,再后来问了THH和二货才改对的prim算法,是因为重边我没处理啊,上火
#include <cstdio>
#include <cstring>
#include<cstdlib>
#include<iostream>
using namespace std ;
#define oo (1<<28)
const int N = ;
int map[N][N],low[N],flag[N];//low数组是用来保留最小代价的;
//flag数组是用来标记的,找过得点就不再去找
int m,n;
int u,v,w ;
int prim()
{
int i,j,pos,min,ans=;
memset(flag,,sizeof(flag));
flag[]=;
pos=;
for(i = ; i <= n ; i++)
if(i != pos)
low[i] = map[pos][i];
for(i = ; i < n ; i++)
{
min=oo;
for(j = ; j <= n ; j++)
if(flag[j] == &&min>=low[j])
{
min = low[j];
pos = j ;
}
ans += min ;
flag[pos] = ;
for(j = ; j <= n ; j++)
if(flag[j] == &&low[j]>map[pos][j])
low[j]=map[pos][j];
}
return ans;
}
int main()
{
int ans;
while(scanf("%d %d",&n,&m)!=EOF)
{
for(int i = ; i < N ; i++)
{
for(int j = ; j < N ; j++)
{
map[i][j] = oo ;
}
}
for(int i = ; i <= m ; i++)
{
scanf("%d %d %d",&u,&v,&w);
if(map[u][v] >w)//防止重边出现保留小的重边
map[u][v] = map[v][u] = w ;
}
ans = prim();
printf("%d\n",ans);
}
return ;
}
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
using namespace std ;
const int MAXN = ;
const int MAX = ;
int EDG[MAX];
int sum;
struct node
{
int u ;
int v ;
int w ;
} map[MAXN],t;
int find(int x)
{
while(x!=EDG[x]){
x=EDG[x];
}
return x;
}
void Kruskal(int x,int y,int z)
{
x = find(x) ;
y = find(y) ;
if(x != y)
{
EDG[x] = y ;
sum += z;
}
}
int main()
{
int n,m,i,j;
while(~scanf("%d %d",&n,&m))
{
sum = ;
int k = ;
for(int i = ; i <= n ; i++)
EDG[i] = i ;
for(int i = ; i <= m ; i++)
scanf("%d %d %d",&map[i].u,&map[i].v,&map[i].w);
for(int i = ; i <= m- ; i++){
for(j = i+ ; j <= m ; j++){
if(map[i].w > map[j].w)
{
t = map[i] ;
map[i] = map[j];
map[j] = t ;
}
}
}
for(int i = ; i <= m ; i++)
Kruskal(map[i].u,map[i].v,map[i].w);
printf("%d\n",sum);
}
return ;
}
SDUT图结构练习——最小生成树的更多相关文章
- 图结构练习——最小生成树(kruskal算法(克鲁斯卡尔))
图结构练习——最小生成树 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 有n个城市,其中有些城市之间可以修建公路,修建不同的公 ...
- 图结构练习——最小生成树(prim算法(普里姆))
图结构练习——最小生成树 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 有n个城市,其中有些城市之间可以修建公路,修建不同 ...
- SDUT OJ 图结构练习——最短路径 ( Floyed 算法 AND Dijkstra算法)
图结构练习——最短路径 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem ...
- 图结构练习——最短路径(dijkstra算法(迪杰斯拉特))
图结构练习——最短路径 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 给定一个带权无向图,求节点1到节点n的最短路径. ...
- 图结构练习——判断给定图是否存在合法拓扑序列(dfs算法(第一个代码),邻接矩阵(前两个代码),邻接表(第三个代码))
sdut 2140 图结构练习——判断给定图是否存在合法拓扑序列 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 给定一个有向图 ...
- 图结构练习——最短路径(floyd算法(弗洛伊德))
图结构练习——最短路径 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 给定一个带权无向图,求节点1到节点n的最短路径. 输 ...
- C++图结构的图结构操作示例
示例代码: /* By qianshou 2013/10/5明天就要开学了~哎~ */ #include<iostream> using namespace std; /********* ...
- C# 图结构操作
仿造<<Java常用算法手册>>里面对的算法,使用C#实现了一遍. 理论知识我就不讲解了,在这本书里面已经写的非常完美! 代码如何下: using System; using ...
- Theano学习笔记(三)——图结构
图结构(Graph Structures)这是理解Theano该基金会的内部运作. Theano编程的核心是用符号占位符把数学关系表示出来. 图结构的组成部分 如图实现了这段代码: importthe ...
随机推荐
- 配置Qt开发环境下的OpenCV开发
1.使用CMake工具(http://www.cmak.org),选择MinGW Makefile. *一定要注意编译的版本要与Qt的mingw32的版本相同.否则容易出现undefined refe ...
- 3月3日 Mark
感觉LeetCode OJ 水题较多... 不过回复基础就是这样吧.. 刚刚和Gaewah聊了下,后续可以考虑去做Topcoder的SRM或者codeforces,Mark.
- 设置textview背景色为透明
UITextView *textView=[[UITextView alloc]initWithFrame:CGRectMake(20, 40, 150, 170)];//初始化并设置大小 textV ...
- [windows phone开发]新生助手的开发过程与体会二
上一讲咱们谈了新生助手主页的基本的设计,今天我们谈一谈关于展现实景地图时等动画的设计,即Storyboard的应用. 在Windows phone中,Storyboard类表示通过时间线控制动画,并为 ...
- 使用inotify检测linux目录内文件变化
#include <unistd.h> #include <sys/inotify.h> #include <stdio.h> #include <error ...
- C#简单实现发送手机短信
偶然想起,像编写一个从电脑向手机发送短信的程序,从网上查找到有三种方式:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册;(2) ...
- 用cookie实现localstorage功能
在项目中需要利用到html5的localstorage.但在利用这个属性的时候却发现无法达到预定目标.经过不断的检查及排除,最后发现原因所在: 项目中使用的浏览器是支持localstorage的,但是 ...
- Log Parser 2.2
Log Parser 2.2 是一个功能强大的通用工具,它可对基于文本的数据(如日志文件.XML 文件和 CSV 文件)以及 Windows 操作系统上的重要数据源(如事件日志.注册表.文件系统和 A ...
- ActiveMQ之Topic
与Queue不同,Topic实现的是发布/订阅模型,在下面的例子中,启动两个消费者共同监听一个Topic,然后循环给这个Topic发送多个消息. 例子: public class TopicTest ...
- android架构介绍
Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA ...