halozatrombolas/destroy_p3.py

41 lines
979 B
Python

import numpy as np
import networkx as nx
import argparse
parser=argparse.ArgumentParser(description='')
parser.add_argument('-g', '--graph', dest='graph', action='store', default=None)
args=parser.parse_args()
if not args.graph:
print ("need a graph as input")
exit()
def read_graph(graph_file):
with open(graph_file) as f:
n=int(f.readline())
m=int(f.readline())
A=[[0]*n for _ in range(n)]
for _ in range(m):
[u,v]=map(int, f.readline().split())
A[u][v]=1
A[v][u]=1
G=nx.Graph(np.array(A))
return G
def max_comp_size(G):
return max([len(c) for c in nx.connected_components(G)])
del_list=[]
G=read_graph(args.graph)
n=len(G.nodes)
while max_comp_size(G) > n/2:
u=np.random.choice(G.nodes)
if u not in del_list:
del_list.append(u)
G.remove_node(u)
#print len(del_list), del_list
for u in del_list:
print (u)