S1 is False
The technique delayed branching tries to find an instruction which can be placed in branch delay slot which is not the instruction next to branch instruction because it will result in branch penalty.
Instead, the compiler attempts to find a suitable instruction to occupy the delay slot, one that needs to be executed even when the branch is taken. It can do so by moving one of the instructions preceding the branch instruction to the delay slot. Of course, this can only be done if any data dependencies involving the instruction being moved are preserved. If a useful instruction is found, then there will be no branch penalty. If no useful instruction can be placed in the delay slot because of constraints arising from data dependencies, a NOP must be placed there instead.
S2 is False
Delayed branching is not any problem but a technique to reduce branch penalty.