算法导论机考复习(图相关问题)

news/2024/11/18 2:35:18/

最小生成树

kruskal算法求最小生成树,把所有的边进行排序,然后依次加入n-1条边,中间要判断是否有环路

用到并查集f,初始化的时候每个点的f都是自己,只要遍历到一条边,就判断两个点是否有共同的f,也就是两个点是否是连通的。

不是就加入到最小生成树中,并且把这两个其中一个的父亲结点更新为另一个点的父亲结点。

//***最小生成树算法***
//Kruskal算法
//图必须是无向图
#include<bits/stdc++.h>
using namespace std;
const int N=1000;
int n,m,qi,zh,ans,cnt;
int f[N];
struct node
{int x,y,d;
}G[N];
bool cmp(node a,node b)
{return a.d<b.d;
}
int findf(int i)
{return i=f[i]?i:findf(f[i]);
}
int main()
{cin>>n>>m;for(int i=1;i<=m;i++){cin>>G[i].x>>G[i].y>>G[i].d;}sort(G+1,G+m+1,cmp);//每一个点都是一个独立的连通分量for(int i=1;i<=n;i++){f[i]=i;}//只需要n-1条边,此时所有的边已经排序好for(int i=1;i<=m;i++){//考察方法就是考察边的两个结点int f1=findf(G[i].x);int f2=findf(G[i].y);if(f1!=f2){ans+=G[i].d;f[f1]=f2;cnt++;if(cnt==n-1)break;}}cout<<ans<<endl;
}
/*
5 7
1 2 4
1 4 2
2 4 1
2 3 4
4 3 1
4 5 7
3 5 3
*/

Prim算法求最小生成树算法

维护一个dis数组,初始化为无穷,初始化先把1加进去,然后进行n-1次循环把其他最小的结点依次加进去,如果在循环中间出现了找不到一个最小点,也就是都是INF,说明无法生成最小生成树,根本就不连通。

//***最小生成树算法***
//prim算法
//图必须是无向图
#include<bits/stdc++.h>
using namespace std;
const int N=1000;
const int INF=0x3f3f3f3f;
int n,m,qi,zh,ans,cnt,quan;
int G[N][N];
int dis[N];//图到某个点的距离
bool book[N];//是否加入到图中//每次都用新加入的边去更新所有点到s的距离
int prim()
{//初始化先把1加进去dis[1]=0;book[1]=1;for(int i=1;i<=n;i++){dis[i]=min(dis[i],G[1][i]);}//之后加n-1个距离s最小的结点//而且每次加都更新所有邻接结点for(int i=2;i<=n;i++){int u;int minn=INF;int t=-1;for(int i=1;i<=n;i++){if(dis[i]<minn&&!book[i]){t=1;u=i;minn=dis[i];}}if(t==-1)//在循环里面就没有找到合适的结点加入return -1;book[u]=1;ans+=dis[u];for(int i=1;i<=n;i++){dis[i]=min(dis[i],G[u][i]);}}return ans;
}
int main()
{cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){G[i][j]=INF;}dis[i]=INF;}for(int i=1;i<=m;i++){cin>>qi>>zh>>quan;G[qi][zh]=quan;G[zh][qi]=quan;}cout<<prim();}
/*
5 7
1 2 4
1 4 2
2 4 1
2 3 4
4 3 1
4 5 7
3 5 3
*/


http://www.ppmy.cn/news/797656.html

相关文章

为什么都选择租服务器,服务器租用有什么好处

为什么都选择租服务器&#xff0c;服务器租用有什么好处 我们都知道&#xff0c;互联网服务行业的兴起&#xff0c;租服务器已经不只是局限于企业了&#xff0c;慢慢的普及到个人用户&#xff0c;越来越多的个人用户开始参与到服务器的租用中。很多人觉得自己购买服务器和单独拉…

机器学习 GPU服务器租用平台推荐 各大平台对比 MistGPU 可白嫖!

前几天写了一个小程序&#xff0c;用到了机器学习&#xff0c;需要训练神经网络。可惜&#xff0c;我自己的渣渣笔记本根本就跑不起来代码&#xff0c;更别提完成训练了&#xff0c;所以就在网上找合适的GPU服务器来租用&#xff0c;先解燃眉之急再说。 阿里云 一开始肯定想着…

实验二 常用网络命令

实验目的 了解常用网络命令及其使用方法。通过网络命令了解网络状态&#xff0c;并利用网络命令对网络进行简单的操作。 实验原理 1. 通过 ping 命令检测网络故障 &#xff08;1&#xff09;命令格式&#xff1a; ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v T…

电子器件系列42:小型中功率继电器

特性&#xff1a; 8A/12A的微型PCB电源继电器。 引脚间距&#xff1a;2mm/1.5mm。 高介电强度&#xff0c;符合IEC16950标准。 环氧树脂密封型和密封型无助焊剂均可使用。 设计用于UPS和电源应用。 符合RoHS-Directive 2011/65/EU。 继电器学习笔记&#xff08;二&#…

a12处理器怎么样_苹果A12处理器性能怎么样

苹果A12处理器性能怎么样?根据目前得到的消息&#xff0c;苹果A12处理器将会用在全新的iPhone XI以及其他的iPhone手机上&#xff0c;那么这个处理器怎么样呢? 目前多次准确爆料不同品牌处理器的科技博主i冰宇宙又在微博上曝光了全新的A12处理器的性能。根据他的爆料&#xf…

a12处理器怎么样_a14和a12z哪个性能好?处理器参数对比怎么样?

在今天的苹果发布会上&#xff0c;A14正式进行发布&#xff0c;是由全新的iPAdAir进行搭载&#xff0c;相信很多人都很想了解这款处理器的性能&#xff0c;这次就拿它和A12z处理器进行对比一下&#xff0c;看看哪个性能更加出色。 A14处理器 A14是全球首款采用5nm工艺制程的芯片…

有了性能超92%笔记本电脑的A12X Bionic,苹果可以和英特尔x86处理器分手了?

继九月的iPhone XS发布会之后&#xff0c;苹果在10月30日又举行了一场发布会&#xff0c;更新了许久没有更新的产品&#xff0c;比如Macbook Air和Mac mini。当然也发布了新一代iPad Pro&#xff0c;除了外观屏幕的变化&#xff0c;i搭载的A12X Bionic处理器也值得关注。 A12X…

苹果A12,麒麟980与骁龙855最新处理器性能大比拼,谁将引领“处理器之王”?

说起智能手机&#xff0c;那手机芯片必然是最为重要的一环&#xff0c;比如苹果的A12处理器&#xff0c;华为的麒麟980&#xff0c;高通的骁龙系列。 那么今天我们就来对比一下&#xff0c;这三款处理器&#xff0c;究竟哪一款的性能更占优呢&#xff1f; 作为苹果公司来说&a…