#include<stdio.h>
#include<string.h>
#define maxn 1<<18
double dp[maxn],p[18][18];
int main()
{
int n,i,j,k,s;
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%lf",&p[i][j]);
dp[(1<<n)-1]=1;
for(s=(1<<n)-1;s>=1;s--)
{
int t=0;
double sum;
for(i=0;i<n;i++)
if(s&1<<i)t++;
if(t==1)continue;
for(i=0;i<n;i++)
{
if(s&1<<i)
{
sum=0;
for(j=0;j<n;j++)
if((s&1<<j))
sum+=p[j][i]*1.0;
dp[s^(1<<i)]+=dp[s]*sum*2/t/(t-1)*1.0;
}
}
}
for(i=0;i<n-1;i++)
printf("%.6lf ",dp[1<<i]);
printf("%.6lf\n",dp[1<<i]);
return 0;
}
codeforces16E.fish
最新推荐文章于 2020-11-17 08:25:45 发布