问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用可达性矩阵判断图的连通性用c语言

发布网友 发布时间:2023-02-04 01:57

我来回答

1个回答

热心网友 时间:2024-11-30 14:39

这些是c++的代码不知是否满足你的要求。1、邻接表表示的图中分别用DFS和BFS遍历#include#include#includeusingnamespacestd;/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Description:图的邻接表的结点structEdge{intdest;//目标结点下标//intvalue;//路径长度Edge*link;//下一个结点};/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Description:为图添加一条边//Input:edge-欲加边的结点;dest-目的结点//Output:edge-加边后的结点//Tags:voidAddEdge(Edge*&edge,intdest){//简单的链表操作if(!edge){edge=newEdge;edge->dest=dest;edge->link=0;}else{Edge*tail=edge;while(tail->link)tail=tail->link;tail->link=newEdge;tail=tail->link;tail->dest=dest;tail->link=0;}}/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Description:Console下输入图的边//Input:Graph-图;n-图的结点的个数;EdgeNumber-添加边的个数;//Output:Graph-添加边后的图//Tags:用户输入点对(a,b),表示添加a->b的路径voidInput(Edge**&graph,intn,intEdgeNumber){inti=0,a,b;for(i=0;ib的边}}/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Description:深度优先搜索并输出//Input:Graph-图;n-图的结点的个数;StartEdge—开始的结点;//Output:Console下输出遍历的顺序//Tags:递归调用_dfs过程、回溯算法void_dfs(Edge**&graph,bool*visited,intn,intindex);voidDFS(Edge**&graph,intn,intStartEdge){bool*visited=newbool[n];//标记每个结点是否已访问memset(visited,(int)false,sizeof(bool)*n);visited[StartEdge]=true;printf("startedge:%d\n",StartEdge);_dfs(graph,visited,n,StartEdge);visited[StartEdge]=false;}//_dfs过程://Input:Graph-图;n-图的结点的个数;index-当前的下标,visited-记录结点是否已访问//Output:Console下输出遍历的顺序void_dfs(Edge**&graph,bool*visited,intn,intindex){intnIndex;//下一个结点下标Edge*edge=graph[index];//遍历用结点while(edge)//遍历所有的邻接结点{nIndex=edge->dest;if(!visited[nIndex]){visited[nIndex]=true;printf("%d\t",nIndex);_dfs(graph,visited,n,nIndex);}edge=edge->link;}}/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Description:广度优先搜索并输出//Input:Graph-图;n-图的结点的个数;StartEdge-开始的结点//Output:Console下输出遍历的顺序//Tags:需要一个队列记录所有的灰色结点voidBFS(Edge**&graph,intn,intStartEdge){bool*visited=newbool[n];//记录结点是否已访问memset(visited,(int)false,sizeof(bool)*n);queueQ;//记录准备访问的结点Edge*edge;//记录当前遍历的结点intnIndex;//记录下标visited[StartEdge]=true;printf("startedge:%d\n",StartEdge);Q.push(StartEdge);while(!Q.empty()){edge=graph[Q.front()];while(edge){nIndex=edge->dest;if(!visited[nIndex]){visited[nIndex]=true;printf("%d\t",nIndex);Q.push(nIndex);}edge=edge->link;}Q.pop();}}intmain(){constintNODE_NUMBER=7;//10结点constintEDGE_NUMBER=11;//10边Edge**graph=newEdge*[NODE_NUMBER];//图memset(graph,0,sizeof(Edge*)*NODE_NUMBER);//一开始没边Input(graph,NODE_NUMBER,EDGE_NUMBER);//输入边printf("DFS:\n");DFS(graph,NODE_NUMBER,0);//深度优先printf("\n");printf("BFS:\n");BFS(graph,NODE_NUMBER,0);//广度优先printf("\n");return0;}2、邻接矩阵表示的图中利用bellman-ford算法获得单点最短路#include#includeusingnamespacestd;#defineINTEGER_INF0xffff//表示无穷大路径/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Description:邻接矩阵表示的图structGraph{int**value;//权值intnumber;//结点个数};/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Description:初始化图//Input:number-结点个数//Output:graph-图voidInitGraph(Graph&graph,intnumber){inti,j;graph.value=newint*[number];for(i=0;iv[i]+graph.value[i][j])//松弛v[j]=v[i]+graph.value[i][j];//判断是否存在边权和为负的环路for(i=0;iv[i]+graph.value[i][j])returnfalse;//输出for(t=1;t
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
赵玉平名家论坛 赵玉平人物经历 杭州市汽车西站 现在能提前几天售票啊? 请问杭州西站汽车票可以提前几天买? 杭州汽车西站在节假日的时候需要提前买票的吗 散步有助于减肥吗 魑瑟忝箜莫尘读什么 端午送什么 端午节家里要摆放什么东西 龙舟是如何制作的? 新缘电脑验光仪用英语怎么说 有谁用过Newedge平台 New Edge设计理念的诠释??? 张允和姐妹都嫁给谁了 《无耻之徒partⅱ》最新txt全集下载 格力3匹挂机空调和3匹天井机哪个好 笛卡尔说的名言:“我思故我在。” 父爱的名言,要作者 高尔基经典父爱的格言 谁是谁非造句? 博锐剃须刀充满电一般能用多久 一举两得上下文解释词语 多少爱可以重来里面的婷婷是谁演的 despac o歌词? 人民币升值对国债有什么影响 人民币升值,持有美国的国债真的变少了吗!? 买国债当时的利息算的是2.4如果利息国债人民币升值国债利息会变吗... 一个身份证号能认证几个腾讯微博? 2460k㎡等于多少h㎡ 参量质变仪为什么不能部署 dfs是邻接表和邻接矩阵通用吗 matlab中imshow()问题 如果蜗牛有爱情演得是什么 如果蜗牛有爱情许诩季白什么时候在一起 白色风车歌词藏头诗 关于白色风车歌词 白色风车,歌曲名是什么? 成语故事《精卫填海读后感 贾诚亿这个名字怎么样? 《陈情令》的故事主要讲的是什么? 四字成语与长什么哭 丰田camrv是什么车,老式,手动。 丰田chr是广汽还是一汽? 韫色过浓电视剧分集剧情 水里种蒜苗方法 水种蒜苗的过程方法介绍 陶行知有哪些教育名言? 北京草莓音乐节阵容发布,草莓音乐节有什么样的由来 颜回的故事有哪些? 颜回有什么事迹 颜回的历史典故? 我在春天等你-林笛儿