題目描述
一個具有 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