hdu1233 还是畅通工程 基础最小生成树
2024-09-07 18:53:46
//克鲁斯卡尔
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = ;
struct node
{
int begin, end, len;
}cun[maxn];
int n, fa[maxn], ans, m; bool cmp(node a, node b)
{
return a.len<b.len; //按长度有小到大排序
} void init()
{
for (int i = ; i <= n; i++)
{
fa[i] = i;
}
} int find(int x)
{
if (x == fa[x])
return fa[x];
else
return fa[x] = find(fa[x]);
} void join(int a, int b)
{
a = find(a);
b = find(b);
if (a != b)
fa[b] = a;
} int kruskal()
{
sort(cun, cun + m, cmp);
init(); //初始化并查集
ans = ;
for (int i = ; i<m; i++)
{
if (find(cun[i].begin) != find(cun[i].end)) //一条边的两个端点不在同一个集合,则选他,并合并
{
join(cun[i].begin, cun[i].end);
ans += cun[i].len;
}
}
return ans;
} int main()
{
while (cin >> n)
{
if (n == ) break;
m = n*(n - ) / ;
for (int i = ; i<m; i++)
cin >> cun[i].begin >> cun[i].end >> cun[i].len;
cout << kruskal() << endl;
}
return ;
}
//prim
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std; #define INF 0x7fffffff
# define MAXN
typedef long long int LL; LL n, m;
LL cmpa[MAXN][MAXN], book[MAXN], dis[MAXN]; int main()
{
LL a, b, weight, ans, p, q, f1, f2, minn, mark;
while (scanf("%I64d", &n) && n)
{
//初始化 这题prime算法合适,边那摩多,都是完全图了
for (LL i = ; i<MAXN; i++)
{
dis[i] = INF;
for (LL j = ; j<MAXN; ++j)
cmpa[i][j] = INF;
} memset(book, , sizeof(book));
ans = ; for (LL i = ; i<n*(n - ) / ; ++i)
{
scanf("%I64d %I64d %I64d", &a, &b, &weight);
cmpa[a][b] = cmpa[b][a] = weight;
} //连通图
book[] = ;
dis[] = -; for (LL t = ; t<n; ++t)
{
for (LL i = ; i <= n; ++i)
{//更新dis中的值
for (LL j = ; j <= n; ++j)
{
if (book[j] && dis[i]>cmpa[i][j])
{ //j在树中
dis[i] = cmpa[i][j];
}
}
} //选点建树
minn = INF, mark = ;
for (LL i = ; i <= n; ++i)
{
if (book[i])
continue;
else
{
if (dis[i] < minn)
{
minn = dis[i];
mark = i;
}
}
} if (minn != INF)
{
ans += minn;
book[mark] = ;
dis[mark] = -;
} }
cout << ans << endl; }
return ;
}
最新文章
- 俄罗斯方块(Java实现)
- MySQL学习
- [转载]Ubuntu17.04(Zesty Zapus)路线图发布:2017年4月13日发布
- 无废话SharePoint入门教程三[创建网站集和网站]
- Nginx反向代理配置可跨域
- 基于MFC的单文档,多文档,对话框应用程序
- Fisher-Yates 乱序算法
- UVA 11076 Add Again 计算对答案的贡献+组合数学
- HDU 4940(杭电更多的学校#7 1006) Destroy Transportation system(到处乱混)
- react-router 踩坑记
- 关闭Excel提示文件格式和扩展名不匹配的警告框
- 关于离线底图和离线shp文件的加载
- html->;html5->;css->;javascript(js)->;jQuery->;AJAX->;JSON
- 数据结构Java版之交换算法(一)
- P4178 Tree(点分治)
- php中header函数参数的Cache-control的使用方法
- 使用nexus3.x搭建maven私服
- 苹果电脑自带python安装tensorflow一直有问题
- position:absolute在IE8浏览器下无法显示正确位置
- Vue.js,select中的option用ajax想循环控制值的显示 v-model可以实现但提示报错,这是为什么?