Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <deque>
- #include <algorithm>
- #include <vector>
- #include <vector>
- #include <fstream>
- #include <ctime>
- using namespace std;
- bool m[100][100];
- bool used[100];
- deque<int>best_path;
- deque<int>path;
- bool done = false;
- void dfs(int i, int to, int n){
- used[i] = true;
- path.push_back(i);
- if(i == to){
- best_path = path;
- done = true;
- }
- else {
- for(int j = 0; j<n; j++){
- if(m[i][j] && !used[j] && !done){
- dfs(j,to,n);
- }
- }
- }
- path.pop_back();
- }
- ostream& operator<<(ostream& os, vector<int>a){
- for(int i = 0; i<a.size(); i++){
- os<<a[i]<<" ";
- }
- return os;
- }
- ostream& operator<<(ostream& os, deque<int>a){
- for(int i = 0; i<a.size(); i++){
- os<<a[i]<<" ";
- }
- return os;
- }
- int main()
- {
- //string s = "D://Studying/C/Tools/QtCreator/bin/dfs/test.txt";
- string s = "D://Shmyginds/for_c++/olympy/test.txt";
- ifstream fin(s.c_str());
- int n;
- int from, to;
- cin>>n>>from>>to;
- for(int i = 0; i<n; i++){
- used[i] = false;
- for(int j = 0; j<n; j++){
- m[i][j] = false;
- }
- }
- for(int i = 0; i<n; i++){
- for(int j = 0; j<n; j++){
- fin>>m[i][j];
- cout<<m[i][j]<<" ";
- //cin>>m[i][j];
- }
- cout<<endl;
- }
- dfs(from-1, to-1, n);
- int steps;
- if(best_path.size()>0){
- steps = best_path.size()-1;
- for(int i = 0; i<best_path.size(); i++){
- best_path[i]++;
- }
- cout<<steps<<endl;
- cout<<best_path;
- }
- else{
- cout<<-1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement