Cod sursa(job #469849)

Utilizator MciprianMMciprianM MciprianM Data 9 iulie 2010 12:07:34
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
# include <cstdio>

using namespace std;

double dp [ ( 1 << 18 ) ];
int n;
double a [ 18 ] [ 18 ];

void solve ( int state ){

	int i, j, nFish;
	double s;

    for ( ; state; -- state ){
        nFish = 0;
        for ( i = 0; i < n; ++ i )
            if ( ( state & ( 1 << i ) ) )
                ++ nFish;
        for ( i = 0; i < n; ++ i )
            if ( ( state & ( 1 << i ) ) ){
                s = 0.0;
                for ( j = 0; j < n; ++ j )
                    if ( ( state & ( 1 << j ) ) )
                        s += a [ j ] [ i ];
                    dp [ ( state ^ ( 1 << i ) ) ] += ( double ) ( dp [ state ] * s * 2 ) / ( double ) ( nFish * ( nFish - 1 ) );
            }
    }
}



int main(){

	int i, j;

	scanf ( "%d", &n );

	for ( i = 0; i < n ; ++ i )
		for ( j = 0; j < n; ++ j )
			scanf ( "%lf", &a [ i ] [ j ] );

	dp [ ( 1 << n ) - 1 ] = 1.0;
	solve ( ( 1 << n ) - 1);

    for ( i = 0; i < n; ++ i )
		printf ( "%.7lf ", dp [ 1 << i ] );
	printf ( "\n" );

	return 0;

}