This project report discusses the parallel implementation of the all pair shortest path algorithm using MPI and OpenMP. The algorithm was implemented by decomposing the adjacency matrix row-wise across processes. Results show that the parallel algorithm achieves speedup over the sequential version, especially for large graph sizes. The MPI implementation performed better than the OpenMP version. Graphs in the report compare execution time, speedup, and efficiency for different problem sizes and numbers of processes/threads.