题目描述
一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。
输入
第一行两个整数,分别表示n 和 e 的值(1 <= n <= 2 * 10^5, 0 <= e <= 2 * 10^5);
下面e行,每行两个整数,分别表示一条边的两个顶点;
最后一行两个整数,分别表示 source 和 destination的值。
输出
若存在从顶点 source到顶点 destination的路径,则输出true;否则,输出false。
样例输入 Copy
3 3
0 1
1 2
2 0
0 2
样例输出 Copy
true
#include<bits/stdc++.h>
using namespace std;
int n,e;
int main ()
{
cin>>n>>e;
vector<vector<int>> graph(n);
for(int i=0;i<e;i++)
{
int u,v;
cin>>u>>v;
graph[u].push_back(v);
graph[v].push_back(u);
}
int s,d;
cin>>s>>d;
if(s==d)
{
cout<<"true"<<endl;
return 0;
}
vector<bool>visited(n,false);
queue<int>q;
q.push(s);
visited[s]=true;
while(!q.empty())
{
int current=q.front();
q.pop();
for(int i=0;i<graph[current].size();i++)
{
int jb=graph[current][i];
if(!visited[jb])
{
if(jb==d)
{
cout<<"true"<<endl;
return 0;
}
visited[jb]=true;
q.push(jb);
}
}
}
cout<<"false"<<endl;
return 0;
}
//by crtzk7