Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // dfs sử dụng stack, bfs sử dụng queue
- #include <iostream>
- #include <fstream>
- #include <stack>
- #include <queue>
- using namespace std;
- int a[100][100];
- int vet[100];
- int n;
- int k;
- string s;
- int start;
- int finish;
- void readfile(string s)
- {
- ifstream f;
- f.open(s);
- if(f.fail())
- {
- return ;
- }
- f>>n;
- for(int i=0; i<n; i++)
- {
- for(int j=0; j<n; j++)
- {
- f>>a[i][j];
- }
- }
- f.close();
- }
- void dfs_stack( int a[100][100], int start, int n, int vet[100]) // dfs_queue(...)
- {
- int danhdau[100] = {0};
- //stack<int> c;
- queue<int> c;
- c.push(start);
- for(int i=0; i< n; i++)
- {
- vet[i]=-1;
- }
- while(!c.empty())
- {
- int topstack =c.front();
- //int topstack = c.top();
- danhdau[topstack] = 1;
- c.pop();
- for(int i=0; i<n; i++)
- {
- if(a[topstack][i]==1&&danhdau[i]==0)
- {
- c.push(i);
- danhdau[i]=1;
- vet[i]=topstack;
- }
- }
- }
- }
- int main()
- {
- s= "input.txt";
- readfile(s);
- cout<<"nhap dinh bat dau va ket thuc, nhap trong gioi han cho phep tu 0 den "<< n-1 <<endl;
- cin >> start >> finish;
- dfs_stack(a,start,n,vet);
- if(vet[finish]==-1)
- {
- cout<<"khong co duong di";
- }
- else
- {
- stack<int> st;
- int k = finish;
- while(k!=-1)
- {
- st.push(k);
- k=vet[k];
- }
- while (!st.empty())
- {
- cout<<st.top()<<'\t';
- st.pop();
- }
- }
- cout<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement