// C++ header version of GraphAlgs.java - mjd@cs.auckland.ac.nz
// 
#ifndef _GRAPHALG_H
#define _GRAPHALG_H

#include "Graph.h"

void getBFSparents(const Graph &G, int v, int parent[]);

int BFS(const Graph &G, int v, int LevelOrder[]);

int DFS(const Graph &G, int v, int PreOrder[], int PostOrder[]);

bool isConnected(const Graph &G); // assumes undirected

bool isStronglyConnected(const Graph &G);

void getDFSparents(const Graph &G, int v, int parent[]);
    
bool isAcyclic(const Graph &G);

int maxDistance(const Graph &G, int v, int dist[]);

int diameter(const Graph &G);

#endif

