PERT/CPM: Complete Guide with Step-by-Step Example
Everything you need to understand and apply PERT/CPM: what each value means, how to calculate it, and a fully solved 14-activity construction project with focused diagrams for each step.
Guide
What is PERT/CPM?
PERT (Program Evaluation and Review Technique) and CPM (Critical Path Method) are project planning techniques that answer a fundamental question: what is the minimum time needed to complete this project, and which tasks cannot be delayed?
You start by listing all activities, their durations, and their dependencies — which activities must finish before others can start. The algorithm then calculates the earliest and latest possible time for each activity to start and finish. The result is the Critical Path: the sequence of activities that, if delayed, would push back the entire project.
How Each Activity is Represented
In the network diagram, each activity appears as a node with six key values. Understanding these values is the foundation for everything else.
Dependencies (Predecessors)
Activities often depend on others. You cannot pour the foundation (B) before excavation (A) is done. You cannot raise walls (C) before the foundation (B) is set.
In PERT/CPM, you define these relationships explicitly. An arrow from A to B means B cannot start until A finishes.
Step 1 — Forward Pass: ES and EF
The forward pass traverses activities from start to finish, calculating the earliest possible time each activity can start and finish.
Rule: ES = max(EF of all predecessors). If an activity has no predecessors, ES = 0. Then: EF = ES + Duration.
✦ Total project duration = largest EF = 9 (activity C)
What if an activity has multiple predecessors?
When an activity depends on two or more predecessors, it can only start after all of them have finished. So its ES is the maximum EF among all its predecessors.
In the example below, Z depends on both X and Y. X finishes at day 6, Y finishes at day 2. Z must wait for both — so it starts at day 6.
ES(Z) = max(EF(X) = 6, EF(Y) = 2) = 6 → EF(Z) = 6 + 4 = 10
Step 2 — Backward Pass: LS and LF
The backward pass works in reverse — from the last activity back to the first — calculating the latest possible time each activity can start and finish without pushing back the project end date.
Rule: LF = min(LS of all successors). Activities with no successors receive LF = total project duration. Then: LS = LF − Duration.
Total project duration = 9 (from the forward pass). Starting from C backwards:
What if an activity has multiple successors?
When an activity feeds into two or more activities, its LF must be early enough for all of them to start on time. So LF = minimum LS among all successors.
In the example below, Z has two successors: P (LS = 12) and Q (LS = 10). Z must finish no later than day 10 to keep Q on schedule.
LF(Z) = min(LS(P) = 12, LS(Q) = 10) = 10 → LS(Z) = 10 − 5 = 5
Step 3 — Slack and the Critical Path
With ES and LS known for every activity, Slack is trivial to compute. It tells you exactly how much flexibility each activity has.
Slack = LS − ES
In the diagram below: X has Slack = 0 — it is critical and cannot be delayed at all. Y has Slack = 4 — it can start up to 4 days late without affecting the project. Z is also critical (Slack = 0) because it depends on X.
The Critical Path is the chain of activities with Slack = 0 from start to finish. Any delay on this path directly delays the project. All other activities have some flexibility — you can reallocate resources from them to the critical activities if needed.
Worked Example
Residential Construction — 14 Activities
Now let's apply the three steps to a real project. Below you'll find the full forward pass, backward pass, and slack calculation for a 14-activity construction project.
Critical Path — 44 days total
Slack = 0 in all these activities. Any delay directly delays the project delivery.
Full Network Diagram
Each node shows ES, EF (blue), LS, LF (violet) and Slack. Red nodes = critical path. Columns represent topological levels (execution order).
Forward Pass — ES and EF
Traverse activities in topological order. ES = max(EF of predecessors), EF = ES + Duration.
| # | Ativ. | ES = max(EF of predecessors) | Dur. | EF = ES + Dur |
|---|---|---|---|---|
| 1 | AEscavação | No predecessors → ES = 0 | 2 | 0 + 2 = 2 |
| 2 | BFundação | EF(A) = 2 → ES = 2 | 4 | 2 + 4 = 6 |
| 3 | CParedes | EF(B) = 6 → ES = 6 | 10 | 6 + 10 = 16 |
| 4 | DTelhado | EF(C) = 16 → ES = 16 | 6 | 16 + 6 = 22 |
| 5 | EEnc. Exterior | EF(C) = 16 → ES = 16 | 4 | 16 + 4 = 20 |
| 6 | IInst. Elétrica | EF(C) = 16 → ES = 16 | 7 | 16 + 7 = 23 |
| 7 | GMuros | EF(D) = 22 → ES = 22 | 7 | 22 + 7 = 29 |
| 8 | FEnc. Interior | EF(E) = 20 → ES = 20 | 5 | 20 + 5 = 25 |
| 9 | HPintura Ext. | max(EF(E)=20, EF(G)=29) = 29 | 9 | 29 + 9 = 38 |
| 10 | JDivisórias | max(EF(F)=25, EF(I)=23) = 25 | 8 | 25 + 8 = 33 |
| 11 | KPiso | EF(J) = 33 → ES = 33 | 4 | 33 + 4 = 37 |
| 12 | LPintura Int. | EF(J) = 33 → ES = 33 | 5 | 33 + 5 = 38 |
| 13 | MAcabamento Ext. | EF(H) = 38 → ES = 38 | 2 | 38 + 2 = 40 |
| 14 | NAcabamento Int. | max(EF(K)=37, EF(L)=38) = 38 | 6 | 38 + 6 = 44 |
✦ Total project duration = largest EF = 44 days (activity N)
Backward Pass — LS and LF
Traverse in reverse. LF = min(LS of successors), LS = LF − Duration. Activities with no successors receive LF = 44.
| # | Ativ. | LF = min(LS of successors) | Dur. | LS = LF − Dur |
|---|---|---|---|---|
| 1 | NAcabamento Int. | No successors → LF = 44 (total) | 6 | 44 − 6 = 38 |
| 2 | MAcabamento Ext. | No successors → LF = 44 (total) | 2 | 44 − 2 = 42 |
| 3 | LPintura Int. | LS(N) = 38 → LF = 38 | 5 | 38 − 5 = 33 |
| 4 | KPiso | LS(N) = 38 → LF = 38 | 4 | 38 − 4 = 34 |
| 5 | JDivisórias | min(LS(K)=34, LS(L)=33) = 33 | 8 | 33 − 8 = 25 |
| 6 | HPintura Ext. | LS(M) = 42 → LF = 42 | 9 | 42 − 9 = 33 |
| 7 | FEnc. Interior | LS(J) = 25 → LF = 25 | 5 | 25 − 5 = 20 |
| 8 | IInst. Elétrica | LS(J) = 25 → LF = 25 | 7 | 25 − 7 = 18 |
| 9 | GMuros | LS(H) = 33 → LF = 33 | 7 | 33 − 7 = 26 |
| 10 | EEnc. Exterior | min(LS(F)=20, LS(H)=33) = 20 | 4 | 20 − 4 = 16 |
| 11 | DTelhado | LS(G) = 26 → LF = 26 | 6 | 26 − 6 = 20 |
| 12 | CParedes | min(LS(D)=20, LS(E)=16, LS(I)=18) = 16 | 10 | 16 − 10 = 6 |
| 13 | BFundação | LS(C) = 6 → LF = 6 | 4 | 6 − 4 = 2 |
| 14 | AEscavação | LS(B) = 2 → LF = 2 | 2 | 2 − 2 = 0 |
Slack and Critical Path
Slack = LS − ES. Activities with Slack = 0 form the Critical Path.
| Ativ. | ES | LS | Slack = LS − ES | Critical? |
|---|---|---|---|---|
| AEscavação | 0 | 0 | 0 − 0 = 0 | ✓ Critical |
| BFundação | 2 | 2 | 2 − 2 = 0 | ✓ Critical |
| CParedes | 6 | 6 | 6 − 6 = 0 | ✓ Critical |
| DTelhado | 16 | 20 | 20 − 16 = 4 | — |
| EEnc. Exterior | 16 | 16 | 16 − 16 = 0 | ✓ Critical |
| FEnc. Interior | 20 | 20 | 20 − 20 = 0 | ✓ Critical |
| GMuros | 22 | 26 | 26 − 22 = 4 | — |
| HPintura Ext. | 29 | 33 | 33 − 29 = 4 | — |
| IInst. Elétrica | 16 | 18 | 18 − 16 = 2 | — |
| JDivisórias | 25 | 25 | 25 − 25 = 0 | ✓ Critical |
| KPiso | 33 | 34 | 34 − 33 = 1 | — |
| LPintura Int. | 33 | 33 | 33 − 33 = 0 | ✓ Critical |
| MAcabamento Ext. | 38 | 42 | 42 − 38 = 4 | — |
| NAcabamento Int. | 38 | 38 | 38 − 38 = 0 | ✓ Critical |
Full Summary
All calculated values in a single table.
| Ativ. | Desc. | Predecessors | Duration | ES | EF | LS | LF | Slack |
|---|---|---|---|---|---|---|---|---|
| A | Escavação | — | 2 | 0 | 2 | 0 | 2 | 0 |
| B | Fundação | A | 4 | 2 | 6 | 2 | 6 | 0 |
| C | Paredes | B | 10 | 6 | 16 | 6 | 16 | 0 |
| D | Telhado | C | 6 | 16 | 22 | 20 | 26 | 4 |
| E | Enc. Exterior | C | 4 | 16 | 20 | 16 | 20 | 0 |
| F | Enc. Interior | E | 5 | 20 | 25 | 20 | 25 | 0 |
| G | Muros | D | 7 | 22 | 29 | 26 | 33 | 4 |
| H | Pintura Ext. | E, G | 9 | 29 | 38 | 33 | 42 | 4 |
| I | Inst. Elétrica | C | 7 | 16 | 23 | 18 | 25 | 2 |
| J | Divisórias | F, I | 8 | 25 | 33 | 25 | 33 | 0 |
| K | Piso | J | 4 | 33 | 37 | 34 | 38 | 1 |
| L | Pintura Int. | J | 5 | 33 | 38 | 33 | 38 | 0 |
| M | Acabamento Ext. | H | 2 | 38 | 40 | 42 | 44 | 4 |
| N | Acabamento Int. | K, L | 6 | 38 | 44 | 38 | 44 | 0 |
How to Read the Results
Flexible activities (slack > 0)
D (Roof) and G (Walls) have 4 days of slack — they can be delayed without affecting the deadline. Resources can be reallocated from them to critical activities.
Near-critical activity
I (Electrical) has only 2 days of slack. A small overrun makes it critical and extends the whole project.
Main bottleneck
C (Walls) is the longest activity on the Critical Path (10 days) and feeds 3 parallel branches (D, E, I). Delays here propagate everywhere.
Parallelism
After C, three work fronts run in parallel: D→G, E→F, and I. Simultaneous teams reduce the total project duration.
Frequently Asked Questions
What is the Critical Path in PERT/CPM?▾
The Critical Path is the sequence of activities with Slack = 0. It determines the minimum project duration. Any delay in a critical activity delays the whole project. In this example: A → B → C → E → F → J → L → N = 44 days.
What is the difference between ES and LS?▾
ES (Early Start) is the earliest an activity can begin. LS (Late Start) is the latest it can begin without delaying the project. The difference LS − ES is the Slack. If Slack = 0, the activity is critical.
What happens if I delay an activity that has slack?▾
If Slack = 4, you can delay the activity by up to 4 days without affecting the deadline. Delay it more than its slack and it joins the Critical Path, directly impacting delivery.
How does PERT/CPM help in project management?▾
It identifies which activities are critical, which have flexibility, and the project's minimum duration. Managers can prioritize resources, anticipate risks, and negotiate deadlines based on data rather than guesswork.

Try it with your own project
Use the tool for free — or open this example in the editor to see the interactive animated diagram.