题目描述:
有N个快递站点用字符串标识,某些站点之间有道路连接。每个站点有一些包裹要运输,每个站点间的包裹不重复, 路上有检查站会导致部分货物无法通行,计算哪些货物无法正常投递
输入描述:
第一行输入M N,M个包裹N个道路信息. 0<=M,N<=100,检查站禁止通行的包裹如果有多个以空格分开
4 2 package1 A C package2 A C package3 B C package4 A C A B package1 A C package2 package4
输出描述:
输出不能送达的包裹 package2 package4,如果所有包裹都可以送达则输出none,输出结果按照升序排列
示例1
输入:
4 2
package1 A C
package2 A C
package3 B C
package4 A C
A B package1
A C package2
输出:
package2
解题思路:
题目说得不清楚,我按照每条路相互独立的思路来写的,即A-C是一条路,A-B是另一条路
先用两个字典分别存储包裹信息和道路信息,然后两层遍历,如果包裹的路径中包含某条道路名,且该道路的禁止运输名单中含有该包裹,则说明这个包裹无法正常投递,输出这个包裹的名称即可
m,n=map(int,input().split())
pack_info={}
road_info={}
for i in range(m):
info=input().split()
pack_info[info[0]]=''.join(info[1:])
pack_info=sorted(list(pack_info.items()),key=lambda x:x[0])
for j in range(n):
info=input().split()
key=''.join(info[0:2])
value=info[2:]
road_info[key]=value
for i in pack_info:
for j in road_info:
if j in i[1]:
if i[0] in road_info[j]:
print(i[0])