Prim && Kruskal
2024-09-01 07:49:50
Prim
#include<iostream>
#include<cstring>
using namespace std;
const int INF = 0x3f3f3f3f;
const int N = ;
int n, k;
int dis[N], ct[N][N], vis[N]; int Prim()
{
int ans = ;
memset(vis, , sizeof(vis));
/*
for(int i = 1; i <= n; i++)
dis[i] = ct[1][i];
vis[1] = 1;
*/
while()
{
int v = -;
for(int i = ; i <= n; i++)
{
if(!vis[i] && (v == -||dis[v]>dis[i])) v = i;
}
if(v == -) break;
ans += dis[v];
vis[v] = ;
for(int i = ; i <= n; i++)
if(!vis[i])
dis[i] = min(dis[i], ct[v][i]);
}
return ans;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
cout.tie();
cin >> n >> k;
memset(dis, INF, sizeof(dis));
int tmp;
while(k--)
{
cin >> tmp;
dis[tmp] = ;
}
for(int i = ; i <= n; i++)
for(int j = ; j <= n; j++)
cin >> ct[i][j];
cout << Prim() << endl;
return ;
}
Kruskal
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = ;
struct node
{
int l, r, c;
bool operator < (const node & x)
{
return c < x.c;
}
}A[N*N];
int pre[N];
int Find(int x)
{
if(x == pre[x]) return x;
return pre[x] = Find(pre[x]);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
cout.tie();
int n, m;
cin >> n >> m;
for(int i = ; i <= n; i++)
pre[i] = i;
int t, tmp;
cin >> t;
m--;
while(m--)
{
cin >> tmp;
t = Find(t);
tmp = Find(tmp);
pre[tmp] = t;
}
int cnt = ;
for(int i = ; i <= n; i++)
{
for(int j = ; j <= n; j++)
{
cin >> tmp;
if(i <= j) continue;
A[cnt].l = i, A[cnt].r = j, A[cnt++].c = tmp;
}
}
int ans = ;
sort(A, A+cnt);
for(int i = ; i < cnt; i++)
{
int x =A[i].l, y = A[i].r, ct = A[i].c;
x = Find(x), y = Find(y);
if(x == y) continue;
pre[y] = x;
ans += ct;
}
cout << ans << endl;
return ;
}
最新文章
- 自定义框架(MyMvc)
- C# 4.0 新特性dynamic (待学习)
- 前端见微知著JavaScript基础篇:this or that ?
- Java使用for循环打印乘法口诀(正倒左右三角形)
- 图解 &; 深入浅出 JavaWeb:Servlet 再说几句
- c/c++指针总结[pointer summary]
- lastLogon和lastLogonTimestamp的区别
- HDU5772 (最小割)
- Sencha Touch 2.4 callParent() 用法
- keditor_php图片上传
- sql生成20位数随机数
- HDU 5062 Beautiful Palindrome Number(数学)
- BZOJ 4152: [AMPPZ2014]The Captain( 最短路 )
- Alpha冲刺第十二天
- 依赖注入[6]: .NET Core DI框架[编程体验]
- TestNG Suite 运行出现中文乱码如何解决
- Python学习周末练习1-用户登录
- 15 python 初学(闭包,函数装饰器)
- 基于C语言的磁引导园丁机器人源程序 --单片机应用
- MySQL命令行下执行sql文件(sql脚本)