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

建设工程学部研究生培养网站企业培训系统

建设工程学部研究生培养网站,企业培训系统,网站建设客户开发方案,wordpress引用js插件图的存储&#xff1a; 1.邻接矩阵&#xff1a; 我们用map[i][j]表示i--->j的边权 2.用vector数组&#xff08;在搜索专题的游戏一题中应用过&#xff09; 3.用邻接表&#xff1a; 下面是用链表实现的基本功能的代码&#xff1a; #include<bits/stdc.h> using nam…

图的存储:

1.邻接矩阵:

我们用map[i][j]表示i--->j的边权

2.用vector数组(在搜索专题的游戏一题中应用过)

3.用邻接表:

下面是用链表实现的基本功能的代码:

#include<bits/stdc++.h>
using namespace std;
struct node{int dian,zhi;struct node* next;
};
void insert(int x,int y,int z){node *p=new node;p->dian=y;p->zhi=z;p->next=head[x];head[x]=p;
}

4.用伪邻接表(链式前向星)(注意第一个next=-1,开始直接memset head=-1即可)

对于(1,3,30,-1)表示1的点指向3,边权为30,下一条边.

我们把这个存在edge[1]里,并令head[1]=1;

(3,6,10,-1),我们存在edge[2]里,并令head[3]=2;

(1,2,10,head[1]),我们存在edge【3】里,并让head[1]=3;

下面是实现的代码:

#include<bits/stdc++.h>
using namespace std;
struct node{int dian,zhi;int next;
};
void insert(int x,int y,int z){edge[++m].dian=y;edge[m].zhi=z;edge[m].next=head[x];head[x]=m;
}

欧拉图(前提是联通)

如果图的一个路径包括每个边恰好一次,则为欧拉路径。

欧拉路径+回路=欧拉回路。

具有欧拉回路的图为欧拉图,具有欧拉路径但无欧拉回路的图为半欧拉图

那么如何判断是否为欧拉图呢?

对于无向图,等价于该图所有顶点的度数为偶数(一进一出)+联通。

对于有向图,等价于该图所有顶点的入度==出度+联通。

拓扑排序

即按照一定的规则安排活动的先后次序(可能有多解)。

现在给一张图,a--》b表示要完成b必须先完成a,那我们如何排序呢?

1.先找没有前驱的点作为开始。

2.把它连着的边给删除,产生更多没有前驱的点作为下一步,入度-1。

3.删不动则无法完成

具体实现中,我们不能总是去跑入度为0的点。

于是,我们用一个队列。在删后发现入度为0的点就放入队列中即可。

下面是实现的代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,cnt;
struct node{int dian;int next;
}edge[1000000];
int head[1010],inc[1010];
queue<int> q;
void insert(int x,int y){edge[++cnt].dian=y;edge[cnt].next=head[x];head[x]=cnt;
}
void tuopu(){for(int i=1;i<=n;i++){if(inc[i]==0) q.push(i);}int tot=0;while(!q.empty()){int x=q.front();q.pop();cout<<x<<endl;tot++;for(int i=head[x];i!=-1;i=edge[i].next){inc[edge[i].dian]--;if(inc[edge[i].dian]==0){q.push(edge[i].dian);}}}if(tot!=n) cout<<-1;
}
int main(){cin>>n>>m;memset(head,-1,sizeof(head));for(int i=1;i<=m;i++){int x,y;cin>>x>>y;insert(x,y);inc[y]++;}tuopu();
}

拓扑排序的应用:

1.判断一个有向图是否有环,无环的图所有点都可以拓扑排序。

2.AOE网:

对于第一个,我们只用在拓扑排序上维护时间的max即可。

对于第二个,我们可以计算一下每一个活动的最早开始时间与最晚开始时间,因此我们相当于求最早开始时间等于最晚开始时间的点。

那么,我们如何求最晚开始时间呢?

我们只要从结尾反方向跑一回即可。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,cnt;
struct node{int dian;int next;int zhi;
}edge[1000000];
int head[1010],inc[1010],shijian[1010];
queue<int> q;
void insert(int x,int y,int z){edge[++cnt].dian=y;edge[cnt].next=head[x];edge[cnt].zhi=z;head[x]=cnt;
}
void tuopu(){for(int i=1;i<=n;i++){if(inc[i]==0){q.push(i);shijian[i]=0;}}while(!q.empty()){int x=q.front();q.pop();for(int i=head[x];i!=-1;i=edge[i].next){inc[edge[i].dian]--;shijian[edge[i].dian]=max(shijian[edge[i].dian],shijian[x]+edge[i].zhi);if(inc[edge[i].dian]==0){q.push(edge[i].dian);}}}
}
int main(){cin>>n>>m;memset(head,-1,sizeof(head));for(int i=1;i<=m;i++){int x,y,z;cin>>x>>y>>z;insert(x,y,z);inc[y]++;}tuopu();cout<<shijian[n];
}

http://www.yayakq.cn/news/294792/

相关文章:

  • 建设企业网站进去无法显示专门提供做ppt小素材的网站
  • 湛江建设企业网站怎么保证网站安全性
  • 开个网站建设公司需要什么软件徐州建设银行网上银行个人网站
  • 长春网站建设小程序wordpress加速优化插件
  • 长沙出名的网站设计推广仿建网站
  • 仿牌网站空间装修设计培训学费多少钱
  • app与微网站的区别是什么意思今年国内重大新闻
  • 内蒙古做网站找谁中商外贸app
  • 怎么做电影流量网站广州申请公司注册网站
  • wordpress自定义分类法上海网站seo策划
  • 厦门网站建设制作多少钱seo的课谁讲的好
  • 宜昌做网站哪家最便宜企业网站建设对企业客户的意义
  • 江门营销网站建设c2c定义
  • 用mediawiki做的网站印刷电商网站开发
  • 陈村网站开发新手怎么做销售
  • 上海 食品网站设计seo快速排名首页
  • wordpress博客入门烟台网站排名seo
  • 南阳美容网站建设建立模板wordpress
  • 广元网站建设seo优化营销制作设计网站建设包括的内容
  • 中型网站招聘网站代理
  • 北京定制公交网站河南安阳市房价
  • linux 网站建设WordPress谷歌广告插件
  • 一般网站版式有哪几种白城做网站
  • wordpress 内存清理wordpress mysql优化
  • 网站的建设服务中心郑州大旗网站制作公司
  • 龙潭古镇网站建设福建省建设厅网站电脑板
  • 网站首页设计欣赏手机编辑WordPress博客
  • 怎么通过域名访问网站深圳做网站哪家好
  • 徐州模板自助建站怎样用js做网站轮播图
  • 秦皇岛哪家公司网站建设好重庆建工第二建设有限公司网站