工场outing
创新工场家族成员每年会组织一次旅行,公司的hr为了安排旅行路线伤透脑筋, 因为公司party会场被安排到一个景点B, 而大家的宾馆被安排在了另-个景点A。而景点A和景点B之间有若干个景点No .. Ni。 每个旅游景点大家最多只玩一次. 同时每个旅游素点都有一个评分X, 景点之间会有公路相连, 大家都不喜欢走回头路. 所以每条公路只能走一次。 请帮助hr设计一条路线P, 从A景点到B景点. 再
从B景点返回A景点, 途中必须经过若干个景点,同时使得该路线各个景点的评分和r最
大。
第-行输入旅游景点景点的个数n(不包括A市和B市. 0< n <= 100)
接下来的n行, 每行输入字符串s,代表旅游景点i的名称Ni和评分Xi (O < Xi <= 100)
接下来输入k, 表示必去的景点的个数 (o<=k<n)
接下来的k行, 每行输入必去的旅游景点名称
接下来输入公路的条数e
接下来e行. 每行输入公路的起点和终点
输出:
如果没有解:
输出一行NO
如果有解:
第一行输出YEs
第二行输出r(最大的评分和〉
第三行输出路径r 女口果路径不唯一. 输出任意一条
sample Input:
5
N1 10
N2 10
N3 10
N4 10
N5 20
1
N3
8
AN1
N1 NZ
NZ B
B N3
N3 N4
N4 A
BN5
N5 N4
Sample 0utput:
YES
40
A N1 N2 B N3 N4 A
解释: 由于N3必达. 所返回时不能走包含N5的路线
说明:
1. 除了”A”景点以外的景点最多只出现一次(可以为0,也可以l, 不可能重复)
思路:
如下图所示,如果A是结点1,B是结点7.要求从A到B,再从B到A的路径,可以先求出从1到7 的所有路径。这可以用DFS的思想求出Find_All_Path(),具体看代码。
1到7的所有路径有:
1 2 5 7 权重:20
1 3 6 7 权重:20
1 4 7 权重:30
路径用二维数组保存,权重用一维数组保存。
</