Pagini recente » Cod sursa (job #1166032) | Cod sursa (job #1478601) | Cod sursa (job #1065471) | Cod sursa (job #45593) | Cod sursa (job #2926971)
import sys
import self as self
class Adjacency:
def __init__(self, fisier, orientation):
self._file = fisier
self.adjMatr = self.BuildAdjMatr(orientation)
self.adjList = self.BuildAdjList(orientation)
def DFS(self, node, visited = set()):
if node not in visited:
#print(node, end= " ")
visited.add(node)
for neighbor in self.adjList[node]:
self.DFS(neighbor,visited)
def ConnectedComp(self, visited = set()):
connectedComponents = 1
for node in self.adjList.keys():
self.DFS(node, visited)
break
for node in self.adjList.keys():
if node not in visited:
connectedComponents += 1
return connectedComponents
def BuildAdjMatr(self, oriented=0):
fileName = open(self._file)
line = fileName.readline().rstrip('\n').split()
vertex = int(line[0])
edge = int(line[1])
edgeArray = []
for line in fileName:
myLine = line.rstrip('\n').split()
edgeArray.append([myLine[0], myLine[1]])
adjMatrix = [[0 for i in range(vertex + 1)] for j in range(vertex + 1)]
if oriented == 0:
for aSet in edgeArray:
adjMatrix[int(aSet[0])][int(aSet[1])] = 1
adjMatrix[int(aSet[1])][int(aSet[0])] = 1
else:
for aSet in edgeArray:
adjMatrix[int(aSet[0])][int(aSet[1])] = 1
return adjMatrix
def BuildAdjList(self, oriented=0):
fileName = open(self._file)
line = fileName.readline().rstrip('\n').split()
vertex = int(line[0])
edge = int(line[1])
edgeArray = []
vertexDic = {}
for line in fileName:
myLine = line.rstrip('\n').split()
edgeArray.append([myLine[0], myLine[1]])
if oriented == 1:
try:
vertexDic[myLine[0]].append(myLine[1])
except:
vertexDic.update({myLine[0]: [myLine[1]]})
else:
try:
vertexDic[myLine[0]].append(myLine[1])
except:
vertexDic.update({myLine[0]: [myLine[1]]})
try:
vertexDic[myLine[1]].append(myLine[0])
except:
vertexDic.update({myLine[1]: [myLine[0]]})
return vertexDic
one = Adjacency("dfs.in", 0)
x = one.ConnectedComp()
with open("dfs.out",'w') as f:
sys.stdout = f
print(x)