#include<stdio.h>
struct
{
int city,pre;
} sq[100];
int jz[50][50];
int qh,qe,n,visited[100];
void out(int qe)//输出结果
{
if(sq[qe].pre==0)
printf("%d",sq[qe].city);
else
{
out(sq[qe].pre);
printf("--%d",sq[qe].city);
}
}
void createGraph(int n)//创建邻接矩阵
{
int i,j;
for(i=0; i<n; i++)
for(j=0; j<n; j++)
scanf("%d",&jz[i][j]);
}
void search(int p,int q)//查找
{
int i;
qh=0;
qe=1;
sq[1].city=p;
sq[1].pre=0;
visited[1]=1;
while(qh!=qe) //当队不为空
{
qh=qh+1; //结点出队
for(i=0; i<n; i++)
if(jz[sq[qh].city][i]==1&&visited[i]==0) //如果从城市sq[qh].city可以直接到达城市i,且城市i没有访问过
{
qe=qe+1;//结点入队
sq[qe].city=i;
sq[qe].pre=qh;
visited[i]=1;
if(sq[qe].city==q)
{
printf("基本路径为:");
BFS(广度优先算法)——判断无向简单图中任意两点是否连通
最新推荐文章于 2025-06-30 19:47:43 发布