题目链接:https://codeforces.com/contest/16/problem/E
#include <iostream>
using namespace std;
typedef double db;
static const int MAXN=20;
db dp[1<<MAXN],a[MAXN][MAXN];
int n;
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%lf",&a[i][j]);
dp[(1<<n)-1]=1;
for(int i=(1<<n)-1;i;i--)
{
int cnt=0;
for(int j=0;j<n;j++)
if(i>>j&1) cnt++;
if(cnt<2) continue;
db d=2.0/cnt/(cnt-1);
for(int j=0;j<n;j++)
if(i>>j&1)
for(int k=0;k<n;k++)
if((i>>k&1) && j!=k)
dp[i-(1<<j)]+=d*dp[i]*a[k][j];
}
for(int i=0;i<n;i++)
printf("%.6lf ",dp[1<<i]);
return 0;
}