• + 1 comment
    class vertex:
    	def __init__(self,color=None,adj_list=[]):
    		self.color=color
    		self.d=d
    		self.f=f
    		self.parent=parent
    		self.adj_list=adj_list
    
    class graph:
    	def __init__(self,n):
    		self.n=n
    		self.list=[None]*n
    		for i in xrange(n):
    			self.list[i]=vertex()
    
    def DFS(G):
    	for i in xrange(G.n):
    		G.list[i].color='white'
    	global time
    	time = 0
    	for i in xrange(G.n):
    		if G.list[i].color=='white':
    			time=time+clib-croad
    			DFS_VISIT(G,i)
    	return time
    
    def DFS_VISIT(G,i):
    	global time
    	time=time+croad
    	G.list[i].color='gray'
    	for j in G.list[i].adj_list:
    		if G.list[j-1].color=='white':
    			G.list[j-1].parent=i+1
    			DFS_VISIT(G,j-1)
    	G.list[i].color='black'
    
    q=input()
    for i in xrange(q):
    	n,m,clib,croad=map(int,raw_input().split())
    	G=graph(n)
    	for j in xrange(m):
    		v1,v2=map(int,raw_input().split())
    		G.list[v1-1].adj_list.append(v2)
    		G.list[v2-1].adj_list.append(v1)
    	if clib<=croad:
    		print clib*n
    	else:
    		print DFS(G)
    

    it is still giving runtime error