code: 
  """simple docstring"""
  from typing import SupportsIndex
  
  import numpy as np
  from scipy.ndimage import convolve
  
  
  
  
  def     __lowerCamelCase  (		UpperCamelCase__				,     UpperCamelCase__				,     UpperCamelCase__      ):
  
  
  	"""simple docstring"""
  
  
  
  
  
  
  	_UpperCAmelCase =						np.stack((horizontal_flow, vertical_flow)				,     2      )
  
  	# Create a grid of all pixel coordinates and subtract the flow to get the
  	# target pixels coordinates
  	_UpperCAmelCase =						np.stack(
  	    np.meshgrid(np.arange(0				,     image.shape[1]      )				,     np.arange(0				,     image.shape[0]      )      )				,     2      )
  	_UpperCAmelCase =						np.round(grid - flow      ).astype(np.intaa      )
  
  	# Find the locations outside of the original image
  	_UpperCAmelCase =						(grid < 0) | (grid >= np.array([image.shape[1], image.shape[0]]      ))
  	_UpperCAmelCase =						0
  
  	_UpperCAmelCase =						image[grid[:, :, 1], grid[:, :, 0]]
  
  	# Set pixels at invalid locations to 0
  	_UpperCAmelCase =						0
  
  	return warped
  
  
  
  
  def     __lowerCamelCase  (		UpperCamelCase__				,     UpperCamelCase__				,     UpperCamelCase__				,     UpperCamelCase__ = None				,     ):
  
  
  	"""simple docstring"""
  
  
  
  
  
  
  	if alpha is None:
  		_UpperCAmelCase =						0.1
  
  	# Initialize flow
  	_UpperCAmelCase =						np.zeros_like(UpperCamelCase__      )
  	_UpperCAmelCase =						np.zeros_like(UpperCamelCase__      )
  
  	# Prepare kernels for the calculation of the derivatives and the average velocity
  	_UpperCAmelCase =						np.array([[-1, 1], [-1, 1]]      ) * 0.25
  	_UpperCAmelCase =						np.array([[-1, -1], [1, 1]]      ) * 0.25
  	_UpperCAmelCase =						np.array([[1, 1], [1, 1]]      ) * 0.25
  	_UpperCAmelCase =						np.array(
  	    [[1 / 12, 1 / 6, 1 / 12], [1 / 6, 0, 1 / 6], [1 / 12, 1 / 6, 1 / 12]]      )
  
  	# Iteratively refine the flow
  	for _ in range(UpperCamelCase__      ):
  		_UpperCAmelCase =						warp(UpperCamelCase__				,     UpperCamelCase__				,     UpperCamelCase__      )
  		_UpperCAmelCase =						convolve(UpperCamelCase__				,     UpperCamelCase__      ) + convolve(UpperCamelCase__				,     UpperCamelCase__      )
  		_UpperCAmelCase =						convolve(UpperCamelCase__				,     UpperCamelCase__      ) + convolve(UpperCamelCase__				,     UpperCamelCase__      )
  		_UpperCAmelCase =						convolve(UpperCamelCase__				,     UpperCamelCase__      ) + convolve(UpperCamelCase__				,     -kernel_t      )
  
  		_UpperCAmelCase =						convolve(UpperCamelCase__				,     UpperCamelCase__      )
  		_UpperCAmelCase =						convolve(UpperCamelCase__				,     UpperCamelCase__      )
  
  		# This updates the flow as proposed in the paper (Step 12)
  		_UpperCAmelCase =						(
  		    derivative_x * avg_horizontal_velocity
  		    + derivative_y * avg_vertical_velocity
  		    + derivative_t
  		)
  		_UpperCAmelCase =						update / (alpha**2 + derivative_x**2 + derivative_y**2)
  
  		_UpperCAmelCase =						avg_horizontal_velocity - derivative_x * update
  		_UpperCAmelCase =						avg_vertical_velocity - derivative_y * update
  
  	return horizontal_flow, vertical_flow
  
  
  if __name__ == "__main__":
  			import doctest
  
  			doctest.testmod()
  
  
  
  
  
style_context: 
  """simple docstring"""
  import heapq
  
  
  
  
  def     __lowerCamelCase  (		UpperCamelCase__				,     UpperCamelCase__				,     UpperCamelCase__      ):
  
  
  	"""simple docstring"""
  
  
  
  
  
  
  	_UpperCAmelCase =						[(0, start)]  # cost from start node,end node
  	_UpperCAmelCase =						set()
  	while heap:
  		((_UpperCAmelCase) ,      (_UpperCAmelCase)) =						heapq.heappop(UpperCamelCase__      )
  		if u in visited:
  			continue
  		visited.add(UpperCamelCase__      )
  		if u == end:
  			return cost
  		for v, c in graph[u]:
  			if v in visited:
  				continue
  			_UpperCAmelCase =						cost + c
  			heapq.heappush(UpperCamelCase__				,     (next_item, v)      )
  	return -1
  
  
  __magic_name__		       =				{
      '''A''': [['''B''', 2], ['''C''', 5]],
      '''B''': [['''A''', 2], ['''D''', 3], ['''E''', 1], ['''F''', 1]],
      '''C''': [['''A''', 5], ['''F''', 3]],
      '''D''': [['''B''', 3]],
      '''E''': [['''B''', 4], ['''F''', 3]],
      '''F''': [['''C''', 3], ['''E''', 3]],
  }
  __magic_name__		       =				{
      '''B''': [['''C''', 1]],
      '''C''': [['''D''', 1]],
      '''D''': [['''F''', 1]],
      '''E''': [['''B''', 1], ['''F''', 3]],
      '''F''': [],
  }
  __magic_name__		       =				{
      '''B''': [['''C''', 1]],
      '''C''': [['''D''', 1]],
      '''D''': [['''F''', 1]],
      '''E''': [['''B''', 1], ['''G''', 2]],
      '''F''': [],
      '''G''': [['''F''', 1]],
  }
  
  __magic_name__		       =				dijkstra(G, '''E''', '''C''')
  print(short_distance)  # E -- 3 --> F -- 3 --> C == 6
  
  __magic_name__		       =				dijkstra(Ga, '''E''', '''F''')
  print(short_distance)  # E -- 3 --> F == 3
  
  __magic_name__		       =				dijkstra(Ga, '''E''', '''F''')
  print(short_distance)  # E -- 2 --> G -- 1 --> F == 3
  
  if __name__ == "__main__":
  			import doctest
  
  			doctest.testmod()
  
  
  
  
  