You can find all the dependent attributes of a given set of attributes by computing the closure of its functional dependencies. Let me demonstrate:
A -> ABC -> ABCD -> ABCDE
A
determines BC
(given) as well as itself (trivially) therefore A -> ABC
. Add the fact that B -> D
to get ABC -> ABCD
. Finally, add CD -> E
to get ABCD -> ABCDE
. We stop here because we've determined the whole relation, therefore A
is a candidate key.
You should verify that, starting from E
, BC
and CD
, you can indeed determine the whole relation.
Starting from B
, we get:
B -> BD
and that's it. The rest of the relation can't be determined from BD
, so it's not a candidate key.
A more visual way of doing it is to sketch the functional dependencies:

Starting from any set of attributes, try finding a path to every other attribute by following the arrows. You can only get to E
if you start at E
or visited both C
and D
.
From B
, you can reach D
, but without C
, you're not allowed to go to E
, which also excludes A
. So B
can't be a candidate key.