Contributor post to be reviewed and published by only one editor

You don’t say how you save the editor -> contributor associations, I assume you store it in a user meta field with key 'assigned_contrib' where you save an array of contributors user id.

First off all, hide posts to other editors using pre_get_posts hook:

add_action('pre_get_posts', 'hide_posts_to_editors');

function hide_posts_to_editors( $query ) {
  if ( is_admin() && ! current_user_can('administrator') ) {
    $self = wp_get_current_user();
    $assigned_contributors = (array) get_user_meta($self->ID, 'assigned_contrib', true);
    $authors = array_merge($self->ID, $assigned_contributors);
    $query->set( 'author', implode(',', $authors) );
  }
}

In this way an editor can only see in admin posts written by himself/herself and the ones by the assigned editors.

But this not prevent and editor that know the post id to edit it by manual inserting the id in the address bar… you can use the load_{$page} action hook for the scope, in this case ('load-post.php')

add_action('load-post.php', 'no_editors_edit', 1);

function no_editors_edit() {
  if ( current_user_can('administrator') ) return;
  $post = isset($_GET['post']) && ! empty($_GET['post']) ? $_GET['post'] : false;
  if ( ! $post ) return;
  $author = get_post_field('post_author', $post);
  $self = wp_get_current_user();
  $assigned_contributors = (array) get_user_meta($self->ID, 'assigned_contrib', true);
  if ( ( $author != $self->ID ) && ! in_array($author, $assigned_contributors) ) {
     wp_redirect( add_query_arg( array('edit_not_allowed'=>1), admin_url() )  );
     exit();
  }
}

And add a notice if this happen…

add_action('admin_notices', 'no_editors_edit_notice');

no_editors_edit_notice() {
  if ( isset($_GET['edit_not_allowed'] && $_GET['edit_not_allowed'] == 1) ) {
    printf('<div class="error"><p>%s</p></div>', __('You are allowed to edit only your posts and the ones by contributors assigned to you.', 'your_text_domain'));
  }
}