public LinkedList<Edge> findAugmentingPath () {
		
		//BFS Algorithm begin
		Queue<Vertex> queue = new LinkedList<Vertex>();
		LinkedList<Edge> edges = new LinkedList<Edge>();
		boolean containsSink = false;
		
		for(int i=0;i<numVertices;i++){
			getVertexByIndex(i).setColor(Vertex.WHITE);
			getVertexByIndex(i).setParaent(null);
		}
		
		source.setColor(Vertex.GRAY);
		source.setParaent(null);
		queue.clear();
		
		queue.add(source);
		while(!queue.isEmpty()){
			Vertex v = queue.poll();
			if(v.equals(sink)){
				containsSink = true;
			}
			for(int i=0;i<res_capacity.length;i++){
				if(res_capacity[v.getLabel()][i] > 0){
					if(getVertexByIndex(i).getColor() == Vertex.WHITE){
						getVertexByIndex(i).setColor(Vertex.GRAY);
						getVertexByIndex(i).setParaent(v);
						queue.add(getVertexByIndex(i));
					}
				}
			}
			v.setColor(Vertex.BLACK);
		}
		if(containsSink){
			Vertex v = sink;
			while(v.getParaent() != null){
				edges.addFirst(new Edge(v.getParaent(),v));
				v = v.getParaent();
			}
		}
		else{
			edges = null;
		}
		return edges;
	}