
from collections.abc import Callable
from math import pi, sqrt
from random import uniform
from statistics import mean
def  lowerCAmelCase__			(  SCREAMING_SNAKE_CASE_     )				->		int:

			# A local function to see if a dot lands in the circle.
			def is_in_circle(SCREAMING_SNAKE_CASE_       ,							SCREAMING_SNAKE_CASE_     ) -> bool:
						lowerCAmelCase__      :      List[Any]         =		sqrt((x**2) + (y**2)     )
						# Our circle has a radius of 1, so a distance
						# greater than 1 would land outside the circle.
						return distance_from_centre <= 1

			# The proportion of guesses that landed in the circle
			lowerCAmelCase__      :      Tuple         =		mean(
			    int(is_in_circle(uniform(-1.0       ,							1.0     )       ,							uniform(-1.0       ,							1.0     )     )     )
			    for _ in range(lowerCAmelCase_     )     )
			# The ratio of the area for circle to square is pi/4.
			lowerCAmelCase__      :      Union[str, Any]         =		proportion * 4
			print(F'''The estimated value of pi is {pi_estimate}'''     )
			print(F'''The numpy value of pi is {pi}'''     )
			print(F'''The total error is {abs(pi - pi_estimate     )}'''     )
def  lowerCAmelCase__			(  SCREAMING_SNAKE_CASE_       ,							SCREAMING_SNAKE_CASE_       ,							SCREAMING_SNAKE_CASE_ = 0.0       ,							SCREAMING_SNAKE_CASE_ = 1.0       ,							)				->		Tuple:
			return mean(
			    function_to_integrate(uniform(lowerCAmelCase_       ,							lowerCAmelCase_     )     ) for _ in range(lowerCAmelCase_     )     ) * (max_value - min_value)
def  lowerCAmelCase__			(  SCREAMING_SNAKE_CASE_       ,							SCREAMING_SNAKE_CASE_ = 0.0       ,							SCREAMING_SNAKE_CASE_ = 1.0     )				->		Any:

			def identity_function(SCREAMING_SNAKE_CASE_     ) -> float:
						return x

			lowerCAmelCase__      :      int         =		area_under_curve_estimator(
			    lowerCAmelCase_       ,							lowerCAmelCase_       ,							lowerCAmelCase_       ,							lowerCAmelCase_     )
			lowerCAmelCase__      :      Tuple         =		(max_value * max_value - min_value * min_value) / 2

			print('******************'     )
			print(F'''Estimating area under y=x where x varies from {min_value} to {max_value}'''     )
			print(F'''Estimated value is {estimated_value}'''     )
			print(F'''Expected value is {expected_value}'''     )
			print(F'''Total error is {abs(estimated_value - expected_value     )}'''     )
			print('******************'     )
def  lowerCAmelCase__			(  SCREAMING_SNAKE_CASE_     )				->		str:

			def function_to_integrate(SCREAMING_SNAKE_CASE_     ) -> float:
						return sqrt(4.0 - x * x     )

			lowerCAmelCase__      :      int         =		area_under_curve_estimator(
			    lowerCAmelCase_       ,							lowerCAmelCase_       ,							0.0       ,							2.0     )

			print('******************'     )
			print('Estimating pi using area_under_curve_estimator'     )
			print(F'''Estimated value is {estimated_value}'''     )
			print(F'''Expected value is {pi}'''     )
			print(F'''Total error is {abs(estimated_value - pi     )}'''     )
			print('******************'     )


if __name__ == "__main__":
					import doctest

					doctest.testmod()







import math

class 						lowerCAmelCase   :

					'''simple docstring'''

					def __init__(     self :		Tuple						,   __a :		int=0							)	->     Optional[Any]:  # a graph with Node 0,1,...,N-1


												"""simple docstring"""

												__lowercase					:							Any			=   n
												__lowercase					:							Optional[int]			=   [
												    [math.inf for j in range(0						,   __a							)] for i in range(0						,   __a							)
												]  # adjacency matrix for weight
												__lowercase					:							Dict			=   [
												    [math.inf for j in range(0						,   __a							)] for i in range(0						,   __a							)
												]  # dp[i][j] stores minimum distance from i to j



					def 					lowerCAmelCase (     self :		int						,   __a :		Optional[int]						,   __a :		Tuple						,   __a :		Dict							)	->     Dict:


												"""simple docstring"""

												__lowercase					:							Any			=   w



					def 					lowerCAmelCase (     self :		List[str]							)	->     Tuple:


												"""simple docstring"""

												for k in range(0						,   self.n							):
																			for i in range(0						,   self.n							):
																										for j in range(0						,   self.n							):
																																	__lowercase					:							List[str]			=   min(self.dp[i][j]						,   self.dp[i][k] + self.dp[k][j]							)



					def 					lowerCAmelCase (     self :		Any						,   __a :		Any						,   __a :		str							)	->     int:


												"""simple docstring"""

												return self.dp[u][v]


if __name__ == "__main__":
	lowerCamelCase       :       int        =				Graph(5)
	graph.add_edge(0, 2, 9)
	graph.add_edge(0, 4, 10)
	graph.add_edge(1, 3, 5)
	graph.add_edge(2, 3, 7)
	graph.add_edge(3, 0, 10)
	graph.add_edge(3, 1, 2)
	graph.add_edge(3, 2, 1)
	graph.add_edge(3, 4, 6)
	graph.add_edge(4, 1, 3)
	graph.add_edge(4, 2, 4)
	graph.add_edge(4, 3, 9)
	graph.floyd_warshall()
	graph.show_min(1, 4)
	graph.show_min(0, 3)