Over the last few years, there has been considerable amount of study and work on developing algorithms for processing massive graphs in the data stream model. Storing massive graphs in the memory of a single machine is not practical which is what the motivation behind data stream algorithms. To obtain space and time efficient algorithms, we develop streaming/semi-streaming algorithms where it is reasonable to assume that the input graph arrives as a stream of edges. We can process the input in either one or multiple passes and the working memory space is restricted.