2024年码蹄杯高职组省赛C题都市路径 题型:最短路

86 阅读1分钟

码题集OJ-都市路径 (matiji.net)

用一个邻接矩阵存图.

#include<bits/stdc++.h>
using namespace std;
int u,k,v;
const int N=110;
int m[N][N],d[N];
	int n;
void bfs(int start)
{
	memset(d,-1,sizeof d);
	
//for(int i=1;i<=n;i++)d[i]=-1;
 queue<int> q;
 q.push(start);
 d[start]=0;
 
 while(!q.empty())
 {
 	int u=q.front();
 	q.pop();
 	
 	for(int v=1;v<=n;v++)
	{
	 if(m[u][v]==0 || d[v]!=-1)
	 continue;
	 
	 d[v]=d[u]+1;
	 q.push(v); 	
	} 
 }
 for(int i=1;i<=n;i++)
 cout<<i<<" "<<((d[i]==-1)?(-1):d[i])<<endl;
}
int main()
{
cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>u>>k;
		while(k--)
		{
			cin>>v;
			m[u][v]=1;
		}
	}
	bfs(1);
	return 0;
}

image.png