考华子的群友说这是24年清华上机第一道题目
#include<iostream>
#include<unordered_map>
#include<math.h>
#include<algorithm>
#include<queue>
using namespace std;
int n;
int w[9][9];
int m[8] = {1,2,3,4,5,6,7,8};
int ans=0;
int fight()
{
queue<int> q;
for(int i=0;i<n;i++)q.push(m[i]);
while(q.size()>1)
{
int a = q.front();q.pop();
int b = q.front();q.pop();
if(w[a][b]==1)q.push(a);
else q.push(b);
}
return q.front();
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>w[i][j];
do{
if(fight() == 1)ans++;
}while(next_permutation(m,m+n));
ans = ans / ((int)pow(2,(n/2)));
cout<<ans<<endl;
return 0;
}