In a nutshell
When transactions run at once, their reads and writes interleave into a schedule. A schedule is safe only if it produces the same result as running the transactions one after another. To check, draw a precedence graph from the conflicting operations: if it has no cycle, the schedule is conflict-serializable and safe; a cycle means no equivalent serial order exists.