Checkpoint

3.2

5 votes
Algorithms, Graph Representation, Graphs, C++
Problem

A river has \(N\) checkpoints on left side and \(M\) checkpoints on the right side. \(P\) bridges are built connecting checkpoints across the river. Guards needs to be placed on checkpoints, a guard can protect all the bridges on which this checkpoint is present. There can be more than one guard to protect a single bridge.

Find the minimum number of guards required to protect all the bridges over the river.

Input Format:

  • First line contains three space-separated integers \(N \ M \ P\).
  • Next \(P\) lines contains two space separated integers \(u \ v\) , denoting a bridge connecting the \(u\) checkpoint on the left side to the \(v\) checkpoint on the right side.

Output Format:

Print the minimum number of guards required to protect all the bridges over the river.

Constraints:

\(1 \le N, M \le 2 \times 10^5 \\ 1 \le P \le 10^5 \\ 1 \le u \le N \\ 1 \le v \le M\)

Time Limit: 2
Memory Limit: 256
Source Limit:
Explanation

Place guards on checkpoint \(1\) and \(2\) on left side of river to cover all bridges.

Editor Image

?