hdu 1102 Constructing Roads(kruskal || prim)
求最小生成树。有一点点的变化,就是有的边已经给出来了。所以,最小生成树里面必须有这些边,kruskal和prim算法都能够,prim更简单一些。有一点须要注意,用克鲁斯卡尔算法的时候须要将已经存在的边预处理一下,并查集转化为同一个祖先。记得要找他们的祖先再转化。普里姆算法仅仅须要将那些已经存在的边都初始化为0就能够了。
kruskal:
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define MAX 0x7fffffff using namespace std;
struct node
{
int i,j,len;
}gra[10005];
int p[105];
int n;
int cmp(const void *a,const void *b)
{
return ((node *)a)->len - ((node *)b)->len;
}
int find(int x)
{
return p[x] == x? x: (p[x] = find(p[x]));
}
void kruskal()
{
int i,sum = 0;
for(i=1; i<=n*n; i++)
{
int x = find(gra[i].i);
int y = find(gra[i].j);
if(x != y)
{
sum += gra[i].len;
p[x] = y;
}
}
cout << sum << endl;
return ;
}
int main()
{
int i,j,m,c;
while(cin >> n)
{
int k = 1;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
cin >> c;
gra[k].i = i;
gra[k].j = j;
gra[k].len = c;
k ++;
}
cin >> m;
for(i=1; i<=n; i++)
p[i] = i;
int a ,b;
for(i=1; i<=m; i++)
{
cin >> a >> b;
a = find(a);//注意这里。wa了几次。。。要找他们的祖先。。 。
b = find(b);
p[a] = b;
}
qsort(gra+1,k-1,sizeof(gra[0]),cmp);
kruskal();
}
return 0;
}
prim:
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define MAX 0x7fffffff using namespace std;
int gra[105][105];
int n;
void prim()
{
int visit[105],now,i,j;
int d[105];
memset(visit,0,sizeof(visit));
for(i=1; i<=n; i++)
d[i] = MAX;
now = 1;visit[1] = 1;
d[1] = 0;
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
if(!visit[j] && d[j]>gra[now][j])
d[j] = gra[now][j];
int MIN = MAX;
for(j=1; j<=n; j++)
{
if(!visit[j] && MIN > d[j])
MIN = d[now=j];
}
visit[now] = 1;
}
int sum = 0;
for(j=1; j<=n; j++)
sum += d[j];
cout << sum << endl;
return ;
}
int main()
{
int i,j,c;
while(cin >> n)
{
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
cin >> c;
gra[i][j] = c;
} int m,a,b;
cin >> m;
for(i=1; i<=m; i++)
{
cin >> a >> b;
gra[a][b] = gra[b][a] = 0;
}
prim();
}
return 0;
}
hdu 1102 Constructing Roads(kruskal || prim)的更多相关文章
- HDU 1102 Constructing Roads, Prim+优先队列
题目链接:HDU 1102 Constructing Roads Constructing Roads Problem Description There are N villages, which ...
- hdu 1102 Constructing Roads (Prim算法)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1102 Constructing Roads Time Limit: 2000/1000 MS (Jav ...
- HDU 1102 Constructing Roads(kruskal)
Constructing Roads There are N villages, which are numbered from 1 to N, and you should build some r ...
- hdu 1102 Constructing Roads(最小生成树 Prim)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1102 Problem Description There are N villages, which ...
- HDU 1102(Constructing Roads)(最小生成树之prim算法)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1102 Constructing Roads Time Limit: 2000/1000 MS (Ja ...
- hdu 1102 Constructing Roads (最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1102 Constructing Roads Time Limit: 2000/1000 MS (Jav ...
- HDU 1102 Constructing Roads (最小生成树)
最小生成树模板(嗯……在kuangbin模板里面抄的……) 最小生成树(prim) /** Prim求MST * 耗费矩阵cost[][],标号从0开始,0~n-1 * 返回最小生成树的权值,返回-1 ...
- hdu 1102 Constructing Roads Kruscal
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1102 题意:这道题实际上和hdu 1242 Rescue 非常相似,改变了输入方式之后, 本题实际上更 ...
- HDU 1102 Constructing Roads
Constructing Roads Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
随机推荐
- [转载]vim常用命令总结
内容出处https://www.jianshu.com/p/a8ab13cff1ea 如有侵权请告知 移动.跳转 h.j.k.l:分别对应左.下.上.右.按键盘分布,从左到右,逆时针. w:移动到下一 ...
- java流与文件的操作 文件加密
课后作业 1,源代码 import java.io.*; import java.nio.file.*; import java.nio.file.attribute.BasicFileAttribu ...
- axios简单封装
写在最前面 新手前端刚刚接触vue,感觉真的好用.项目中需要使用axios,然后学习了一下.借鉴网上一些大佬的经验,现在分享一下axios的简单封装,如果有什么错误的地方,请大家指出. axios安装 ...
- FZU 1980 AbOr's story
AbOr's story Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on FZU. Original I ...
- Android学习笔记(9):使用XML文件和Java代码控制UI界面
Android推荐使用XML文件设置UI界面.然后用Java代码控制逻辑部分,这体现了MVC思想. MVC全名是Model View Controller.是模型(model)-视图(view)-控制 ...
- Android新手入门2016(14)--FragmentTabHost实现选项卡和菜单
本文来自肥宝传说之路,引用必须注明出处! 这章憋了好久.本来想写选项卡的,学到TabHost,TabWidget的,把代码拿过来准备研究的时候,发现竟然在4.0.3版本号被废弃了. 百度一下,发如今后 ...
- CG 内置函数 和 HLSL 内置函数
CG 内置函数 英伟达官网链接: http://http.developer.nvidia.com/Cg/index_stdlib.html absacosallanyasinatan2atanbi ...
- 5.IntellijIDEA常用快捷键总结
转自:https://blog.csdn.net/qq_17586821/article/details/52554731下面的这些常用快捷键需要在实际操作中不断地体会才能真正感受到它们的方便之处. ...
- 在cncc的最后几天的笔记
数据库范式:http://blog.csdn.net/fg2006/article/details/6936439 数据库事务隔离级别:http://blog.csdn.net/fg2006/arti ...
- MPP的进化 - 深入理解Batch和MPP优缺点
https://mp.weixin.qq.com/s/scXNfkpjktCZxBg3pYEUUA?utm_medium=hao.caibaojian.com&utm_source=hao.c ...