Форум сайта python.su
Задан неориентированный граф , надо определить достижимые вершины из вершины S
Формат входного файла
В 1 строчке записаны 3 числа N M S
N кол-во вершин
M кол-во ребер
Далее записаны M строк. Каждая строка задает одно ребро и содержит 2 числа
Формат выходного файла
Вывести достижимые вершины в порядке возрастания
def graph(rebra,start): stack=[start] past=[] otvet=[] while len(stack)!=0: for q in rebra: if q[0]==q[1]: continue if q[0]==stack[0] and q not in past: stack.append(q[1]) past.append(q) elif q[1]==stack[0] and q not in past: stack.append(q[0]) past.append(q) otvet.append(stack.pop(0)) return otvet f=open("graph.in") l=f.read() s=l.split() rebra_int=int(s[1]) start=int(s[2]) rebra=[] q=3 while rebra_int!=0: rebra.append((int(s[q]),int(s[q+1]))) q+=2 rebra_int-=1 temp=graph(rebra,start) temp.sort() otvet="" for q in temp: otvet=otvet+str(q)+" " f1=open("graph.out","w") f1.write(otvet) f1.close()
Отредактировано dingo (Апрель 14, 2012 23:44:36)
Офлайн
class node():
def __init__(self,ind):
self.ind=ind
self.done=0
self.neib=[]
def M(self):
if not self.done:
self.done=1
for i in self.neib:
i.M()
nnode=5
links=[[0,0],[0,1],[4,3]]
nodes=[node(i) for i in range(nnode)]
for i,j in links:
nodes[i].neib.append(nodes[j])
nodes[j].neib.append(nodes[i])
nodes[0].M()
print sorted([i.ind for i in nodes if i.done])
Отредактировано doza_and (Апрель 15, 2012 20:46:06)
Офлайн
Cпс все работает
Офлайн