1 条题解
-
1
思路:dfs+记录路径。
注意:这里叙述一下dfs与bfs记录路径的不同之处。
dfs:记录路径只需要一个普通数组,因为dfs可以返回。
bfs:需要在结构体里开数组,因为bfs的每一步都会产生一个新的组合。
代码:
#include <bits/stdc++.h> using namespace std; #define int long long #define FastIO ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr) struct node{ int v[5]; }e[25]; int vis[25], mp[25]; int m, kk = 0; void dfs(int x, int t) { if(x == m && t) { if(t != 20) return ; kk ++; cout << kk << ": " << m << " "; for(int i = 1; i <= 20; i ++) { cout << mp[i] << " "; } cout << endl; return ; } for(int i = 1; i <= 3; i ++) { if(!vis[e[x].v[i]]) { vis[e[x].v[i]] = 1; mp[t + 1] = e[x].v[i]; dfs(e[x].v[i], t + 1); vis[e[x].v[i]] = 0; } } } void solve() { for(int i = 1; i <= 20; i ++) { cin >> e[i].v[1] >> e[i].v[2] >> e[i].v[3]; } while(cin >> m) { if(!m) break; memset(vis, 0, sizeof(0)); dfs(m, 0); } } signed main() { FastIO; int _T_ = 1; // cin >> _T_; while(_T_ --) solve(); return 0; }
- 1
信息
- ID
- 1081
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 5
- 已通过
- 2
- 上传者