Treasure Hunt Road

Translation of the meaning of problems

Title Description Farmer John was driving a boat sailing on the Caribbean cattle.

Offshore there are N (1≤N≤100) islands, with 1 to N number. John from the island of departure No. 1, and finally to the number N island.

A treasure map says, if his journey through the island appear one of Ai, A2, ..., (2≤M≤10000) such sequences AM (not necessarily adjacent), he eventually will be able to find old treasure. However, since the cattle Caribbean is infested with pirates. John knew that the probability of pirate-infested on the route between any two islands, he used a risk index Dij (0≤Dij≤100000) is described. The minimum and he wanted his treasure hunt through the route of the risk index. So, under the premise to find the treasure, the minimum risk index is how much?

Input and output format of the input format: The first line: space-separated two positive integers N and M

Second to M + 1: Line i + 1 row must FJ represents the i-th islands by an integer Ai

M + 2 of the first row + M + 1 N: i + M + 1 of rows separated by spaces comprising N non-negative integer number i represents the number of the island island ... N each route to the first the risk index. 0 is the i-th guaranteed.

The first line of output format: minimum and the risk index of FJ passed under the premise to find the treasure of routes.

Description This data set has three islands, treasure map requires FJ sequentially through four islands: 1 island, island No. 2, No. 1 back to the island, and finally to 3 islands. Each route index also gives a risk: route (1,2), (2,3), (3,1) and the reverse path thereof are 5,2,1 risk index.

FJ can be extended over the islands to minimize the total number 1,3,2,3,1,3 risk index of 7 to get the treasure. This road map to meet the requirements of the cow (1,2,1,3). We avoid the route between the No. 1 and No. 2 islands, because it's too big a risk index.

Note: The test data in a to b b risk index is not necessarily equal to a danger index!

Translated by @LJC00125

Title Description

Farmer John is on a boat seeking fabled treasure on one of the N (1 <= N <= 100) islands conveniently labeled 1..N in the Cowribbean Sea.

The treasure map tells him that he must travel through a certain sequence A_1, A_2, ..., A_M of M (2 <= M <= 10,000) islands, starting on island 1 and ending on island N before the treasure will appear to him. He can visit these and other islands out of order and even more than once, but his trip must include the A_i sequence in the order specified by the map.

FJ wants to avoid pirates and knows the pirate-danger rating (0 <= danger <= 100,000) between each pair of islands. The total danger rating of his mission is the sum of the danger ratings of all the paths he traverses.

Help Farmer John find the least dangerous route to the treasure that satisfies the treasure map's requirement.

Farmer John was driving a boat sailing on the Caribbean cattle.

Offshore there are N (1≤N≤100) islands, with 1 to N number. John from the island of departure No. 1, and finally to the number N island.

A treasure map says, if his journey through the island appear one of Ai, A2, ..., (2≤M≤10000) such sequences AM (not necessarily adjacent), he eventually will be able to find old treasure. However, since the cattle Caribbean is infested with pirates. John knew that the probability of pirate-infested on the route between any two islands, he used a risk index Dij (0≤Dij≤100000) is described. The minimum and he wanted his treasure hunt through the route of the risk index. So, under the premise to find the treasure, the minimum risk index is how much?

Input and output formats

Input formats:

 

* Line 1: Two space-separated integers: N and M

* Lines 2..M+1: Line i+1 describes the i_th island FJ must visit with a single integer: A_i

* Lines M+2..N+M+1: Line i+M+1 contains N space-separated integers that are the respective danger rating of the path between island i and islands 1, 2, ..., and N, respectively. The ith integer is always zero.

 

Output formats:

 

* Line 1: The minimum danger that Farmer John can encounter while obtaining the treasure.

 

Sample input and output

Input Sample # 1:  Copy
3 4 
1 
2 
1 
3 
0 5 1 
5 0 2 
1 2 0 
Output Sample # 1:  Copy
7 

Explanation

There are 3 islands and the treasure map requires Farmer John to visit a sequence of 4 islands in order: island 1, island 2, island 1 again, and finally island 3. The danger ratings of the paths are given: the paths (1, 2); (2, 3); (3, 1) and the reverse paths have danger ratings of 5, 2, and 1, respectively.

He can get the treasure with a total danger of 7 by traveling in the sequence of islands 1, 3, 2, 3, 1, and 3. The cow map's requirement (1, 2, 1, and 3) is satisfied by this route. We avoid the path between islands 1 and 2 because it has a large danger rating.

Input and output formats

Input formats:

The first line: space-separated two positive integers N and M

Second to M + 1: Line i + 1 row must FJ represents the i-th islands by an integer Ai

M + 2 of the first row + M + 1 N: i + M + 1 of rows separated by spaces comprising N non-negative integer number i represents the number of the island island ... N each route to the first the risk index. 0 is the i-th guaranteed.

Output Format

First line: the minimum and the risk index of FJ passed under the premise to find the treasure of routes.

Explanation

This data set has three islands, treasure map requires FJ sequentially through four islands: 1 island, island No. 2, No. 1 back to the island, and finally to 3 islands. Each route index also gives a risk: route (1,2), (2,3), (3,1) and the reverse path thereof are 5,2,1 risk index.

FJ can be extended over the islands to minimize the total number 1,3,2,3,1,3 risk index of 7 to get the treasure. This road map to meet the requirements of the cow (1,2,1,3). We avoid the route between the No. 1 and No. 2 islands, because it's too big a risk index.

Note: The test data in a to b b risk index is not necessarily equal to a danger index!

Shortest basic questions.

Obviously, this is a question of Freud's algorithm. n <= 100, will not time out. We use Floyd algorithm, you can find the shortest distance between the two by two, and according to the desired subject, from 1 to n are sequentially accumulating the shortest, the answer to the final output. Time complexity: O (n ^ 3)

 

`` `Cpp

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;

int n, m, year = 0, i, j, k;

int dist[105][105];

you originally [10010];

int main() {
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++){
scanf("%d",&ori[i]);
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++) {
scanf("%d",&dist[i][j]);
}
}
for(k=1;k<=n;k++){
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
dist[i][j]=min(dist[i][j],dist[i][k]+dist[k][j]);
}
}
}
for(i=2;i<=m;i++){
ans+=dist[ori[i - 1]][ori[i]];
}
ans+=dist[ori[m]][n];
ans+=dist[1][ori[1]];
printf("%d",ans);
}

```

 

Guess you like

Origin www.cnblogs.com/hrj1/p/11123352.html