I found solution. Big Thanks @Scribu Alternative to query_posts for main loop? Now works fine and no more 404 error.
function wpse49295_alter_the_query( $request )
{
$dummy_query = new WP_Query();
$dummy_query->parse_query( $request );
if ( $dummy_query->is_single() )
$request['post_type'] = 'topic';
return $request;
}
add_filter( 'request', 'wpse49295_alter_the_query' );