input=open('in18_3.txt','r+') output=open('out_33_18_3.txt','w+') def matrics(n): global matrix for i in range(n): matrix.append([]) return matrix def dfs(s,n): global visited global connected_component stack=[0]*n top=-1 visited[s]=1 top+=1 stack[top]=s while top!=-1: out=stack[top] top-=1 visited[out]=1 for i in range(n): if(matrix[out][i]==1 and visited[i]!=1): top+=1 stack[top]=i connected_component+=1 def check(visited): for i in range(len(visited)): if visited[i]==0: return i else: pass i=0 matrix=[] for row in input: if i==0: no_of_nodes=int(row) matrix=matrics(no_of_nodes) elif i==1: start_vertex=int(row) else: list=row.split(" ") for j in list: matrix[i-2].append(int(j)) i+=1 connected_component=0 visited=[0]*no_of_nodes dfs(start_vertex,no_of_nodes) node=check(visited) if node!=-1: dfs(node,no_of_nodes) if connected_component==1: output.write("false") else: output.write("true"+"\n"+"No of components: "+str(connected_component)) input.close() output.close()