C++广度优先算法应用题——最短路线

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

测试数据:

8 12
1 2
1 3
1 4
1 6
2 6
3 4
3 5
4 7
5 7
5 8
6 8

//Author:PanDaoxi 
#include <iostream>
using namespace std;
struct node{
    
    
	int city,pre;
}que[1001];
int map[11][11],book[11],head=1,tail=1,n,m;
void print(int n){
    
    
	if(n==1) cout<<que[n].city;
	else {
    
    
		print(que[n].pre);
		cout<<"->"<<que[n].city;
	}
}
void bfs(){
    
    
	que[tail].city=1;
	que[tail].pre=0;
	tail++;
	book[1]=1;
	while(head<tail){
    
    
		for(int i=1;i<=n;i++){
    
    
			if(map[que[head].city][i]==1&&book[i]==0){
    
    
				que[tail].city=i;
				que[tail].pre=head;
				tail++;
				book[i]=1;
			}
			if(que[tail-1].city==n){
    
    
				print(tail-1);
				return;
			}
		}
		head++;
	}
}
int main(){
    
    
	cin>>n>>m;
	int a,b;
	for(int i=1;i<m;i++){
    
    
		cin>>a>>b;
		map[a][b]=1;
		map[b][a]=1;
	}
	bfs();
	return 0;
}

在这里插入图片描述

Guess you like

Origin blog.csdn.net/PanDaoxi2020/article/details/121592041