当前位置: 首页 > wzjs >正文

网站首页制作模板怎么添加网站权重

网站首页制作模板,怎么添加网站权重,外贸订单在哪里能接到,网站建设服务yisinuo图的存储方法有两种,首先就是邻接矩阵 那,什么是邻接矩阵呢,邻接矩阵就是用一个二维数组存储两个结点的邻接关系的一个矩阵 光说可能有的人不懂,我们在图上解释吧 如图,结点之间没有边的地方全部设为无穷大&#xf…

图的存储方法有两种,首先就是邻接矩阵

那,什么是邻接矩阵呢,邻接矩阵就是用一个二维数组存储两个结点的邻接关系的一个矩阵

光说可能有的人不懂,我们在图上解释吧

如图,结点之间没有边的地方全部设为无穷大,1,2表示1到2有一个边,权值就是a[1][2],无向图的话,a[1][2]存一个权值,a[2][1]要存相同的权值;

这就是邻接矩阵,把所有结点之间边的情况存在一个二维数组里,这个二维数组的大小应该是a[N][N] N表示结点个数

也就是空间复杂度为n²,n为结点个数,跟边数无关,适合存储边数多的图,也就是稠密图

#include <iostream>
using namespace std;
const int N = 1010;
int n,m;
int edges[N][N];
int main()
{int n,m;cin >> n >> m;//结点个数和边的个数 //刚开始的时候设置每个结点之间都没有边,嗯。。就设成负无穷好了memset(edges,-0x3f,sizeof edges);for(int i = 1;i<=m;i++){int a,b,c;cin >> a >> b >> c;//ab表示两个结点edges[a][b] = c;edges[b][a] = c;//如果是无向边,相反的情况也要存一下 }	return 0;
}

另一种存储方式就是邻接表了,这种存储方式就是开一个vector数组,然后每个结点都把他有边的结点存起来,但是,光存结点肯定是不行的,这时候我们可以用一个pair类型来存另一个结点以及边的权值

这个就很像我们之前学树的时候的孩子表示法

#include <iostream>
#include <vector>
using namespace std;
const int N = 1010;
int n,m;
typedef pair<int,int> PII;
vector <PII> edges[N];
int main()
{int n,m;cin >> n >> m;//结点个数和边的个数 for(int i = 1;i<=m;i++){int a,b,c;cin >> a >> b >> c;//ab表示两个结点edges[a].push_back({b,c});edges[b].push_back({a,c});}	return 0;
}

当然啦,我们的邻接表除了这种形式存之外,还有别的存储方式,我们还可以用链式前向星来存储

#include <iostream>
#include <vector>
using namespace std;
const int N = 1010;
int n,m;
int h[N],e[2*N],ne[2*N],w[N*2],id;
void add(int a,int b,int c) //把b结点头插到a结点后面的链表里
{id++;e[id] = b;ne[id] = h[a];h[a]=id;w[id] = c;} 
int main()
{int n,m;cin >> n >> m;//结点个数和边的个数 for(int i = 1;i<=m;i++){int a,b,c;cin >> a >> b >> c;//ab表示两个结点add(a,b,c);//把b头插到a的结点里面  add(b,a,c);//把a头插到b的结点里面 }	return 0;
}

好的,这就是我们的几种存储方法,接下来我们还得继续介绍一下图是怎么遍历的

老样子,我们还是分为dfs和bfs遍历

我们先说一下dfs

一路走到黑我们先看邻接矩阵怎么遍历

#include <iostream>
using namespace std;const int N = 5001;
bool st[N];
int edges[N][N];
void dfs(int u)
{cout << u << " ";st[u] = true;for(int v = 1;v<=n;v++){if(edges[u][v]!=-1 && !st[v]){dfs(v);}} 
}
int main()
{int n,m; cin >> n >> m;memset(edges,-1,sizeof(edges));for(int i = 1;i<=m;i++){int a,b,c;cin >> a >> b >> c;edges[a][b] = c;edges[b][a] = c;}return 0;
}

接下来看看邻接表怎么遍历

#include <iostream>
#include <vector>
using namespace std;const int N = 5001;
typedef pair<int,int> PII;
bool st[N];
vector <PII> ret[N];
void dfs(int u)
{cout << u << " ";st[u] = true;for(auto &e : ret[u]){int x = e.first,y = e.second;//x就是连接u的一条边,y就是权值if(!st[x]){dfs(x);} }
}
int main()
{int n,m; cin >> n >> m;for(int i = 1;i<=m;i++){int a,b,c;cin >> a >> b >> c;ret[a].push_back({b,c});ret[b].push_back({a,c});}return 0;
}

链式前向星的dfs

#include <iostream>
#include <vector>
using namespace std;
const int N = 1010;
int n,m;
bool st[N];
int h[N],e[2*N],ne[2*N],w[N*2],id;
void add(int a,int b,int c) //把b结点头插到a结点后面的链表里
{id++;e[id] = b;ne[id] = h[a];h[a]=id;w[id] = c;} void dfs(int u){cout << u << " ";st[u] = true;for(int v = h[u];v;v=ne[v]){int x = e[v];if(!st[x]){dfs(x);}}}
int main()
{int n,m;cin >> n >> m;//结点个数和边的个数 for(int i = 1;i<=m;i++){int a,b,c;cin >> a >> b >> c;//ab表示两个结点add(a,b,c);//把b头插到a的结点里面  add(b,a,c);//把a头插到b的结点里面 }	return 0;
}

http://www.dtcms.com/wzjs/809813.html

相关文章:

  • 小说网站采集可以做嘛政务门户网站建设
  • 免费建网站 建站之星免费制作app的软件下载
  • 如何再网站上做免费广告为什么建网站
  • 长沙好的网站建设公司互动平台上市公司
  • 三拼域名做网站长不长连云港建设局电力网站
  • 高端人才招聘网站排名邢台做网站公司排名
  • 现在自己做网站卖东西行么工作简历模板
  • 国内php开发的网站建设wordpress七牛云使用
  • iis配置网站五莲网站制作
  • 做牙科设计的网站简单制作网页
  • 珠海网站建设方案开发阿里云网站费用吗
  • 秦皇岛找一家能建网站的公司wordpress 调用子栏目
  • 网站优化自已做还是请人做企业网站建设排名资讯
  • 北京公司网站制作价格深圳网站建设toolcat
  • 建一个在线商城网站网络规划设计师教程第四版
  • 网站建设资料 优帮云如何自己免费做网站
  • 做选择的网站中山网站建设案例
  • 专业设计网站格力电器的网站建设评价
  • 商城网站页面设计网页设计与制作教程第二版机械工业出版社答案
  • 网站群系统建设的目的网站文章采集
  • 医疗网站建设策划南阳做网站公司电话
  • 网站建设是属于软件吗哪些网站做翻译可以赚钱
  • 网站图片如何做防盗链静安区品牌网站建设
  • 有什么网站可以发布个人信息可视化网页制作工具
  • 内容管理网站dedecms仿站
  • 京东网站建设案例论文免费创建个人网站申请
  • 足彩网站建设网站备案相关手续费
  • 贵州交通建设集团网站如何建一个公司网站
  • html家乡网站设计企业如何应用网站的
  • 福州网站建设流程小程序开发前景怎么样