P1657 选书
这篇题解主要是练习一下容器的基本使用(用一些容器简单操作来写)
代码如下:
思想是全排列 以前有发布的全排列题解 蛮简单的
#include<bits/stdc++.h>
using namespace std;
vector <int> v[22];
int n,num;
int f[22];
set<int> s;
void dfs(int depth){
if(depth>n){
if(s.size()==n){
num++;
}
return ;
}
vector<int>::iterator it;
for(it=v[depth].begin();it!=v[depth].end();it++){
if(!f[*it]){
f[*it]=1;
s.insert(*it);
dfs(depth+1);
f[*it]=0;
}
}
return ;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int a,b;
cin>>a>>b;
v[i].push_back(a);
v[i].push_back(b);
}
dfs(1);
cout<<num;
return 0;
}