图about连通性,简单路径,深搜,广搜。

图about连通性,简单路径,深搜,广搜。,第1张

概述星期三又要考试啦,今天来复习下,嘿嘿~ 图中两个顶点之间的简单路径  #include<stdio.h>#include<string.h>int m,n,a[100][100],v[100],s[100],top,ve,vb,flag;void dfs(){ int i,j,temp; if(flag) { if(s[top]==ve) { for

星期三又要考试啦,今天来复习下,嘿嘿~

图中两个顶点之间的简单路径

#include<stdio.h>#include<string.h>int m,n,a[100][100],v[100],s[100],top,ve,vb,flag;voID dfs(){	int i,j,temp;	if(flag)	{		if(s[top]==ve)		{			for(j=1;j<=top;j++)				printf("%d",s[j]);			flag=0;		}		if(v[s[top]]==0)		{			v[s[top]]=1;			temp=s[top];			for(i=1;i<=m;i++)			{				if(v[i]==0&&a[temp][i]==1)				{					s[++top]=i;					dfs();//递归;					top--;				}			}		}	}}//深搜;int main(){	int i,k,p,q,b,cas=1;	while(scanf("%d%d",&m,&n)!=EOF)	{		memset(a,sizeof(a));		for(i=0;i<n;i++)		{			scanf("%d%d",&p,&q);			a[p][q]=1;a[q][p]=1;		}		scanf("%d",&k);		printf("Case %d:\n",cas++);		while(k--)		{			scanf("%d%d",&vb,&ve);		top=1;s[top]=vb;		memset(v,sizeof(v));//做标记;		flag=1;		dfs();		printf("\n");		}	}}


图的连通性:

#include<stdio.h>#include<string.h>int m,z;voID dfs(){	int i,temp,v[100]={0};	top=1;s[top]=1;	while(top>0)	{		if(v[s[top]]==0)		{			v[s[top]]=1;			temp=s[top];			z++;			for(i=1;i<=m;i++)			{				if(a[temp][i]==1&&v[i]==0)					s[++top]=i;			}//找出连接的点。		}		else top--;	}}//深搜;int main(){	int i,q;	while(scanf("%d%d",&n)!=EOF)	{		if(m==0&&n==0)break;		memset(a,&q);			a[p][q]=1;a[q][p]=1;		}		z=0;		dfs();		if(z==m)			printf("Connected graph\n");		else printf("Unconnected graph\n");	}}

用的是图的深搜+累计搜到的点。

总结

以上是内存溢出为你收集整理的图about连通性,简单路径,深搜,广搜。全部内容,希望文章能够帮你解决图about连通性,简单路径,深搜,广搜。所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1289310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存