• Source
    1. #include<iostream>
    2. #include<cstring>
    3. using namespace std;
    4. int bitcount(unsigned int n)
    5. {
    6. unsigned int count = 0;
    7. while(n)
    8. {
    9. count += n & 1;
    10. n >>= 1;
    11. }
    12. return count;
    13. }
    14. int main()
    15. {
    16. int a[12][12];
    17. int dp[50000];
    18. int i,j,k;
    19. int t;
    20. cin>>t;
    21. while(t--)
    22. {
    23. for(i=1;i<=11;i++)
    24. for(j=1;j<=11;j++)
    25. cin>>a[i][j];
    26. memset(dp,0,sizeof(dp));
    27.  
    28. /* for(i=1;i<=11;i++)
    29.   for(j=1;j<=11;j++)
    30.   { if(a[j][i])
    31.   dp[1<<(i-1)]=max(dp[1<<(i-1)],a[j][i]);
    32.   }*/
    33. for(i=1;i<(1<<11);i++)
    34. {
    35. k=bitcount(i);
    36. for(j=0;j<=10;j++)
    37. {if(i&(1<<j)&&a[k][j])
    38. dp[i]=max(dp[i],dp[i&~(1<<j)]+a[k][j]);}
    39.  
    40.  
    41.  
    42. }
    43.  
    44. cout<<dp[(1<<11)-1]<<endl;}
    45. return 0;
    46.  
    47.  
    48.  
    49. }
    50.