fork download
  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. int count_on(int i)
  5. {
  6. int r=0;
  7. while(i>0)
  8. {
  9. if(i&1)
  10. r++;
  11. i=i>>1;
  12. }
  13. return r;
  14. }
  15. int main()
  16. {
  17. ios::sync_with_stdio(false);
  18. int t;
  19. cin>>t;
  20. while(t--)
  21. {
  22. int n;
  23. cin>>n;
  24. long int dp[1<<n];
  25. int arr[n][n];
  26. memset(dp,0,sizeof(dp));
  27. for(int i=0;i<n;i++)
  28. {
  29. for(int j=0;j<n;j++)
  30. {
  31. cin>>arr[i][j];
  32. }
  33. }
  34. dp[0]=1;
  35. for(int i=1;i<(1<<n);i++)
  36. {
  37. int x=count_on(i);
  38. for(int k=0;k<n;k++)
  39. {
  40. if(arr[x-1][k]==1&&(i&(1<<k)))
  41. {
  42. dp[i]+=dp[i&~(1<<k)];
  43. }
  44. }
  45. }
  46. cout<<dp[(1<<n)-1]<<endl;
  47. }
  48. return 0;
  49. }
  50.  
Success #stdin #stdout 0s 2820KB
stdin
3
3
1 1 1
1 1 1
1 1 1
11
1 0 0 1 0 0 0 0 0 1 1 
1 1 1 1 1 0 1 0 1 0 0 
1 0 0 1 0 0 1 1 0 1 0 
1 0 1 1 1 0 1 1 0 1 1 
0 1 1 1 0 1 0 0 1 1 1 
1 1 1 0 0 1 0 0 0 0 0 
0 0 0 0 1 0 1 0 0 0 1 
1 0 1 1 0 0 0 0 0 0 1 
0 0 1 0 1 1 0 0 0 1 1 
1 1 1 0 0 0 1 0 1 0 1 
1 0 0 0 1 1 1 1 0 0 0 
11
0 1 1 1 0 1 0 0 0 1 0 
0 0 1 1 1 1 1 1 1 1 1 
1 1 0 1 0 0 0 0 0 1 0 
0 1 0 1 0 1 0 1 0 1 1 
1 0 0 1 0 0 0 0 1 0 1 
0 0 1 0 1 1 0 0 0 0 1 
1 0 1 0 1 1 1 0 1 1 0 
1 0 1 1 0 1 1 0 0 1 0 
0 0 1 1 0 1 1 1 1 1 1 
0 1 0 0 0 0 0 0 0 1 1 
0 1 1 0 0 0 0 0 1 0 1
stdout
6
7588
7426