Algorithm for Longest Increasing Subsequence

The longest Increasing Subsequence (LIS) problem is to find the length
of the longest subsequence of a given sequence such that all elements of
the subsequence are sorted in increasing order.
Support for Graph Algorithms

Added graph algorithms for directed and undirected graph.
Features include undirected graph, DFS, BFS, directed graph BFS & DFS,
finding connected components for directed and undirected graph.
The graph vertices are represented using number 0 to N. While providing
a stream the graph vertices can be represented using alphabetical
characters.