Complete guide + solved example

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.

Opens in the interactive editor with animated step-by-step diagram

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.

Adur = 3
ES
0
EF
3
LS
0
LF
3
Slack 0
ESEarly Start — the earliest the activity can begin.
EFEarly Finish — the earliest it can finish. EF = ES + Duration.
LSLate Start — the latest it can begin without delaying the project.
LFLate Finish — the latest it can finish without delaying the project.
SSlack = LS − ES. Zero means the activity is on the Critical Path. Slack = 0 → Critical

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.

A
Excavation
2 d
B
Foundation
4 d
C
Walls
3 d
1

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.

A2
ES
0
EF
2
B4
ES
2
EF
6
C3
ES
6
EF
9
1A: no predecessors → ES = 0. EF = 0 + 2 = 2.
2B: predecessor A has EF = 2 → ES = 2. EF = 2 + 4 = 6.
3C: predecessor B has EF = 6 → ES = 6. EF = 6 + 3 = 9. This is the project 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.

X6
ES
0
EF
6
Y2
ES
0
EF
2
Z4
ES
6
EF
10

ES(Z) = max(EF(X) = 6, EF(Y) = 2) = 6 → EF(Z) = 6 + 4 = 10

2

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:

A2
LS
0
LF
2
B4
LS
2
LF
6
C3
LS
6
LF
9
1C: no successors → LF = 9. LS = 9 − 3 = 6.
2B: successor C has LS = 6 → LF = 6. LS = 6 − 4 = 2.
3A: successor B has LS = 2 → LF = 2. LS = 2 − 2 = 0.

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.

Z5
LS
5
LF
10
P4
LS
12
LF
16
Q3
LS
10
LF
13

LF(Z) = min(LS(P) = 12, LS(Q) = 10) = 10 → LS(Z) = 10 − 5 = 5

3

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

X6
ES
0
EF
6
LS
0
LF
6
Slack 0
Y2
ES
0
EF
2
LS
4
LF
6
Slack 4
Z4
ES
6
EF
10
LS
6
LF
10
Slack 0

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.

Opens in the interactive editor with animated step-by-step diagram

Critical Path — 44 days total

ABCEFJLN

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).

AEscavação
ES
0
EF
2
LS
0
LF
2
Slack 0
BFundação
ES
2
EF
6
LS
2
LF
6
Slack 0
CParedes
ES
6
EF
16
LS
6
LF
16
Slack 0
DTelhado
ES
16
EF
22
LS
20
LF
26
Slack 4
EEnc. Exterior
ES
16
EF
20
LS
16
LF
20
Slack 0
IInst. Elétrica
ES
16
EF
23
LS
18
LF
25
Slack 2
GMuros
ES
22
EF
29
LS
26
LF
33
Slack 4
FEnc. Interior
ES
20
EF
25
LS
20
LF
25
Slack 0
HPintura Ext.
ES
29
EF
38
LS
33
LF
42
Slack 4
JDivisórias
ES
25
EF
33
LS
25
LF
33
Slack 0
MAcabamento Ext.
ES
38
EF
40
LS
42
LF
44
Slack 4
KPiso
ES
33
EF
37
LS
34
LF
38
Slack 1
LPintura Int.
ES
33
EF
38
LS
33
LF
38
Slack 0
NAcabamento Int.
ES
38
EF
44
LS
38
LF
44
Slack 0
ES/EFForward PassLS/LFBackward PassSlack=0CriticalSlack≤2Watch outSlack>2Flexible
1

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
1AEscavaçãoNo predecessors → ES = 020 + 2 = 2
2BFundaçãoEF(A) = 2 → ES = 242 + 4 = 6
3CParedesEF(B) = 6 → ES = 6106 + 10 = 16
4DTelhadoEF(C) = 16 → ES = 16616 + 6 = 22
5EEnc. ExteriorEF(C) = 16 → ES = 16416 + 4 = 20
6IInst. ElétricaEF(C) = 16 → ES = 16716 + 7 = 23
7GMurosEF(D) = 22 → ES = 22722 + 7 = 29
8FEnc. InteriorEF(E) = 20 → ES = 20520 + 5 = 25
9HPintura Ext.max(EF(E)=20, EF(G)=29) = 29929 + 9 = 38
10JDivisóriasmax(EF(F)=25, EF(I)=23) = 25825 + 8 = 33
11KPisoEF(J) = 33 → ES = 33433 + 4 = 37
12LPintura Int.EF(J) = 33 → ES = 33533 + 5 = 38
13MAcabamento Ext.EF(H) = 38 → ES = 38238 + 2 = 40
14NAcabamento Int.max(EF(K)=37, EF(L)=38) = 38638 + 6 = 44

✦ Total project duration = largest EF = 44 days (activity N)

2

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
1NAcabamento Int.No successors → LF = 44 (total)6446 = 38
2MAcabamento Ext.No successors → LF = 44 (total)2442 = 42
3LPintura Int.LS(N) = 38 → LF = 385385 = 33
4KPisoLS(N) = 38 → LF = 384384 = 34
5JDivisóriasmin(LS(K)=34, LS(L)=33) = 338338 = 25
6HPintura Ext.LS(M) = 42 → LF = 429429 = 33
7FEnc. InteriorLS(J) = 25 → LF = 255255 = 20
8IInst. ElétricaLS(J) = 25 → LF = 257257 = 18
9GMurosLS(H) = 33 → LF = 337337 = 26
10EEnc. Exteriormin(LS(F)=20, LS(H)=33) = 204204 = 16
11DTelhadoLS(G) = 26 → LF = 266266 = 20
12CParedesmin(LS(D)=20, LS(E)=16, LS(I)=18) = 16101610 = 6
13BFundaçãoLS(C) = 6 → LF = 6464 = 2
14AEscavaçãoLS(B) = 2 → LF = 2222 = 0
3

Slack and Critical Path

Slack = LS − ES. Activities with Slack = 0 form the Critical Path.

Ativ.ESLSSlack = LS − ESCritical?
AEscavação0000 = 0Critical
BFundação2222 = 0Critical
CParedes6666 = 0Critical
DTelhado16202016 = 4
EEnc. Exterior16161616 = 0Critical
FEnc. Interior20202020 = 0Critical
GMuros22262622 = 4
HPintura Ext.29333329 = 4
IInst. Elétrica16181816 = 2
JDivisórias25252525 = 0Critical
KPiso33343433 = 1
LPintura Int.33333333 = 0Critical
MAcabamento Ext.38424238 = 4
NAcabamento Int.38383838 = 0Critical

Full Summary

All calculated values in a single table.

Ativ.Desc.PredecessorsDurationESEFLSLFSlack
AEscavação202020
BFundaçãoA426260
CParedesB106166160
DTelhadoC6162220264
EEnc. ExteriorC4162016200
FEnc. InteriorE5202520250
GMurosD7222926334
HPintura Ext.E, G9293833424
IInst. ElétricaC7162318252
JDivisóriasF, I8253325330
KPisoJ4333734381
LPintura Int.J5333833380
MAcabamento Ext.H2384042444
NAcabamento Int.K, L6384438440

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.

PERT/CPM diagram

Try it with your own project

Use the tool for free — or open this example in the editor to see the interactive animated diagram.

My projects