Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //BFS
- #include<iostream>
- #include<queue>
- using namespace std;
- queue<int> qu;
- bool **a, *s;
- int *trace, dau, cuoi, n, m;
- void nhap(){
- cin>> n >> m >> dau >> cuoi;
- dau-- ; cuoi-- ;
- a = new bool*[n];
- s = new bool [n];
- trace = new int [n];
- for(int i = 0; i < n; i++) a [i] = new bool [n];
- for(int i = 0; i < n; i++){
- s [i] = true;
- for(int j = 0 ; j < n ; j++) a [i][j] = false;
- }
- int u, v;
- for(int i = 0; i < m ; i++){
- cin>> u >> v;
- u--; v--;
- a [u][v] = true;
- a [v][u] = true;
- }
- trace [dau] = -1;
- }
- void BFS(){
- qu.push(dau);
- s [dau] = false;
- int u, i;
- do{
- u = qu.front();
- for(i = 0 ; i < n ; i++) if(s [i] && a [u][i]){
- s [i] = false;
- trace [i] = u;
- cout << i + 1 << " ";
- qu.push(i);
- }
- qu.pop();
- }
- while(!qu.empty());
- }
- void res(int i){
- if(trace[i] >= 0) res(trace [i]);
- cout<< i + 1 <<" ";
- }
- int main(){
- nhap();
- cout<< dau + 1<< " can visit : " << dau + 1 << " ";
- BFS();
- cout<<endl;
- res(cuoi);
- delete []s;
- delete []trace;
- for(int i = 0; i < n ; i++) delete []a [i];
- delete []a;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement