diff --git a/DistributeWaterInVillage.py b/DistributeWaterInVillage.py new file mode 100644 index 0000000..a74592a --- /dev/null +++ b/DistributeWaterInVillage.py @@ -0,0 +1,28 @@ +from typing import List +class Solution: + def minCostToSupplyWater(self, n: int, wells: List[int], pipes: List[List[int]]) -> int: + edges = [] + parent = [i for i in range(n+1)] + for pipe in pipes: + edges.append(pipe) + + for i in range(n+1): + edges.append([0,i,wells[i-1]]) + result =0 + def findparent(x): + if parent[x]!=x: + parent[x] = findparent(parent[x]) + return parent[x] + edges.sort(key=lambda x:x[2]) + for edge in edges: + x,y = edge[0],edge[1] + px = findparent(x) + py = findparent(y) + if px!=py: + result+=edge[2] + parent[py] = px + return result + + + + \ No newline at end of file diff --git a/FindCelebrity.py b/FindCelebrity.py new file mode 100644 index 0000000..e5ff5e1 --- /dev/null +++ b/FindCelebrity.py @@ -0,0 +1,47 @@ +# The knows API is already defined for you. +# return a bool, whether a knows b +def knows(a: int, b: int) -> bool: + +# class Solution: +# def findCelebrity(self, n: int) -> int: +# indegree = [0]*n +# for i in range(n): +# for j in range(i+1,n): +# if knows(i,j): +# indegree[j]+=1 +# indegree[i]-=1 +# if knows(j,i): +# indegree[i]+=1 +# indegree[j]-=1 +# for i in range(n): +# if indegree[i] == n-1: +# return i +# return -1 + +# class Solution: +# def findCelebrity(self, n: int) -> int: +# ptncan = 0 +# for i in range(1,n): +# if knows(ptncan,i): +# ptncan = i +# for i in range(n): +# if i == ptncan : continue +# if knows(ptncan,i) or not knows(i,ptncan): return -1 +# return ptncan + + +class Solution: + def findCelebrity(self, n: int) -> int: + ptncan = 0 + for i in range(1,n): + if knows(ptncan,i): + ptncan = i + for i in range(n): + if i == ptncan : continue + if i