→ Directory-based coherence uses a special directory to serve instead of the shared bus in the bus based coherence protocols.
→ In directory-based cache coherence, this is done by using this directory to keep track of the status of all cache blocks, the status of each block includes in which cache coherence "state" that block is, and which nodes are sharing that block at that time, which can be used to eliminate the need to broadcast all the signals to all nodes, and only send it to the nodes that are interested in this single block.
So option (c) is right