The keyword to notice here is preemptive CPU scheduler, this is talking about the scheduler responsible blocking and unblocking the processes, this scheduler doesn’t do anything to the resources held by the process.
Now we should not confuse this with preventing the no preemption characteristics of deadlock, where we preempt the process which is holding some resource needed and waiting for another resource. in this case we preempt( stop the process) and release the resources held by process and give these resource to the process requesting.
CPU scheduler doesn’t deal with resources, it only blocks( temporary stop) for a while and can be restarted(unless it is starving).
Another way to look at it is thinking about the deadlock in process synchronization problems when two processes P1 and P2 are using semaphore, often we preempt to check if solution for synchronization is working fine or not, sometimes deadlock occur and we say the solution is not working correctly.
Deadlock is dependent on process running and how they behave, in deadlock detection we notice that if a process requests for some resources then we can enter unsafe state which may result in deadlock.
The option a talks about scheduler which isnt related to deadlock and thus it is false statement