python3 bfs
公交车
http://www.nowcoder.com/questionTerminal/630816b6884f4ad49590b6c07bab40fc
import sys
n,m=map(int,input().split())
route=[]
for line in sys.stdin:
route.append(list(map(int,line.split()))[1:])
def bus(route,n):
if n==1:
return 0
station={}
for i,routes in enumerate(route):
for station_id in routes:
if station_id in station:
station[station_id].append(i)
else:
station[station_id]=[i]
source_route=station[1]
target_route=set(station[n])
res=1
used_station,used_route=set(),set()
for route_id in source_route:
if route_id in target_route:
return res
used_route.add(route_id)
while source_route:
res+=1
next_route=[]
for route_id in source_route:
for station_id in route[route_id]:
if station_id not in used_station:
for next_route_id in station[station_id]:
if next_route_id not in used_route:
if next_route_id in target_route:
return res
next_route.append(next_route_id)
used_route.add(next_route_id)
used_station.add(station_id)
source_route=next_route
return -1
print(bus(route,n))