/*
* @Author: YMYS
* @Date: 2025-04-09 21:28:22
* @LastEditTime: 2025-04-09 21:46:42
* @FilePath: \VScode-C&C++-Coding\Acwing\算法基础课\3.第三章\搜索与图论总结.cpp
* @URL:
* @Description: 搜索与图论总结
*
* 加油Kellen
*
*/
/////////////////////////////////////////////////////省赛部分//////////////////////////////////////////////////
/*
一、dfs
*/
//1.1、排列数字
//https://www.acwing.com/problem/content/844/
#include<bits/stdc++.h>
#define int long long
#define err cout << "error" << endl
using namespace std;
const int N = 10;
// int T;
// void solve(){
// }
int n;
bool p[N];
vector<int> vc;
void dfs(int x,int u){
if(u==n){
for(auto xx : vc) cout<<xx<<" ";
cout<<endl;
return;
}
for(int i=1;i<=n;i++){
if(!p[i]){
p[i] = true;
vc.push_back(i);
dfs(i,u+1);
p[i] = false;
vc.pop_back();
}
}
}
signed main()
{
#ifdef ABC
freopen("D:/daily_Coding/VScode-C&C++-Coding/in.in", "r", stdin);
freopen("D:/daily_Coding/VScode-C&C++-Coding/out.out", "w", stdout);
#endif
std::ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);
// cin>>T;
// while(T--){
// solve();
// }
cin>>n;
for(int i=1;i<=n;i++){
p[i] = true;
vc.push_back(i);
dfs(i,1);
vc.pop_back();
p[i] = false;
}
return 0;
}
//1.2、n-皇后问题
//
/*
二、bfs
*/
//2.1、走迷宫
//
//2.2、八数码
//
/*
三、树与图的深度优先遍历
*/
//3.1、树的重心
//
/*
四、树与图的广度优先遍历
*/
//4.1、图中点的层次
//
/*
五、Dijkstra
*/
//5.1、朴素版迪杰斯特拉
//
//5.2、优化版本的迪杰斯特拉
//
/*
六、bellman-ford
*/
//6.1、有边数限制的最短路
//
/*
七、spfa
*/
//7.1、spfa求最短路
//
//7.2、spfa判断负环
//
/*
八、Floyd
*/
//8.1、Floyd求最短路
//
/*
九、Prim
*/
//9.1、Prim算法求最小生成树
//
/*
十、Kruskal
*/
//10.1、Kruskal算法求最小生成树
//
/*
十一、染色法判定二分图
*/
//11.1、染色法判定二分图
//
/*
十二、匈牙利算法
*/
//12.1、二分图的最大匹配
////////////////////////////////////////////////////////////国赛部分/////////////////////////////////