#include <stdio.h>#include <iostream>#include <string>#include <string.h>#include <stdlib.h>using namespace std;#define INF 10000000int start;int over;bool sign[9];int NUM;int path[9][9];int road[9];void input() { path[0][0] = INF; path[0][1] = INF; path[0][2] = 10; path[0][3] = INF; path[0][4] = 30; path[0][5] = 100; path[0][6] = INF; path[0][7] = INF; path[0][8] = INF; path[1][0] = INF; path[1][1] = INF; path[1][2] = 5; path[1][3] = INF; path[1][4] = INF; path[1][5] = INF; path[1][6] = INF; path[1][7] = INF; path[1][8] = INF; path[2][0] = INF; path[2][1] = INF; path[2][2] = INF; path[2][3] = 50; path[2][4] = INF; path[2][5] = INF; path[2][6] = INF; path[2][7] = INF; path[2][8] = INF; path[3][0] = INF; path[3][1] = INF; path[3][2] = INF; path[3][3] = INF; path[3][4] = INF; path[3][5] = 10; path[3][6] = INF; path[3][7] = INF; path[3][8] = INF; path[4][0] = INF; path[4][1] = INF; path[4][2] = INF; path[4][3] = 20; path[4][4] = INF; path[4][5] = 60; path[4][6] = INF; path[4][7] = INF; path[4][8] = INF; path[5][0] = INF; path[5][1] = INF; path[5][2] = INF; path[5][3] = INF; path[5][4] = INF; path[5][5] = INF; path[5][6] = INF; path[5][7] = INF; path[5][8] = INF; path[6][0] = INF; path[6][1] = INF; path[6][2] = INF; path[6][3] = INF; path[6][4] = INF; path[6][5] = INF; path[6][6] = INF; path[6][7] = INF; path[6][8] = INF; path[7][0] = INF; path[7][1] = INF; path[7][2] = INF; path[7][3] = INF; path[7][4] = INF; path[7][5] = INF; path[7][6] = INF; path[7][7] = INF; path[7][8] = INF; path[8][0] = INF; path[8][1] = INF; path[8][2] = INF; path[8][3] = INF; path[8][4] = INF; path[8][5] = INF; path[8][6] = INF; path[8][7] = INF; path[8][8] = INF; }void init(){ memset(road, 0, sizeof(road)); NUM = 9; for(int i=0; i<NUM; i++) sign[i] =false; input();}void findRoad(int road[], int length){ for(int i=0; i<length; i++) cout << " " << road[i]; cout << over << endl;}void dfs(int tp, int road[], int length){ sign[tp] = true; for(int i=0; i<NUM; i++) { if(path[tp][i] != INF && sign[i] != true) { if(tp == over) { //road[length++] = over; findRoad(road, length); } else { road[length++] = tp; // for(int i=0; i<6; i++) dfs(i, road, length); sign[i] = false; length--; } } }}int main(){ init(); //freopen("read.txt", "r", stdin); start = 0; over = 3; dfs(start, road, 0); cout << "ok" << endl;}