HDU

来源:互联网 发布:php微信抢红包源代码 编辑:程序博客网 时间:2024/06/03 17:58
These are N cities in Spring country. Between each pair of cities there may be one transportation track or none. Now there is some cargo that should be delivered from one city to another. The transportation fee consists of two parts: 
The cost of the transportation on the path between these cities, and 

a certain tax which will be charged whenever any cargo passing through one city, except for the source and the destination cities. 

You must write a program to find the route which has the minimum cost. 
Input
First is N, number of cities. N = 0 indicates the end of input. 

The data of path cost, city tax, source and destination cities are given in the input, which is of the form: 

a11 a12 ... a1N 
a21 a22 ... a2N 
............... 
aN1 aN2 ... aNN 
b1 b2 ... bN 

c d 
e f 
... 
g h 

where aij is the transport cost from city i to city j, aij = -1 indicates there is no direct path between city i and city j. bi represents the tax of passing through city i. And the cargo is to be delivered from city c to city d, city e to city f, ..., and g = h = -1. You must output the sequence of cities passed by and the total cost which is of the form: 
Output
From c to d : 
Path: c-->c1-->......-->ck-->d 
Total cost : ...... 
...... 

From e to f : 
Path: e-->e1-->..........-->ek-->f 
Total cost : ...... 

Note: if there are more minimal paths, output the lexically smallest one. Print a blank line after each test case. 

Sample Input
50 3 22 -1 43 0 5 -1 -122 5 0 9 20-1 -1 9 0 44 -1 20 4 05 17 8 3 11 33 52 4-1 -10
Sample Output
From 1 to 3 :Path: 1-->5-->4-->3Total cost : 21From 3 to 5 :Path: 3-->4-->5Total cost : 16From 2 to 4 :Path: 2-->1-->5-->4Total cost : 17
题意就不在这叙述了,就是一个floyd + 打印路径;
这题的输出有点诡异,交了三发PE。
具体代码如下:
#include <map>#include <set>#include <cmath>#include <queue>#include <string>#include <vector>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define inf 1<<30#define eps 1e-10#define maxn 0x3f3f3f3f#define zero(a) fabs(a)<eps#define Min(a,b) ((a)<(b)?(a):(b))#define Max(a,b) ((a)>(b)?(a):(b))#define pb(a) push_back(a)#define mem(a,b) memset(a,b,sizeof(a))#define LL long long#define lson step<<1#define rson step<<1|1#define MOD 1000000009#define sqr(a) ((a)*(a))using namespace std;int e[1005][1005];int p[1005][1005];int a[1005];void init(int n) {for(int i = 1; i <= n; i++) {for(int j = 1; j <= n; j++) {if(e[i][j] == -1) e[i][j] = maxn;}}}void floyd(int n) {for(int i = 1; i <= n; i++) {for(int j = 1; j <= n; j++) {p[i][j] = j;}}for(int k = 1; k <= n; k++) {for(int i = 1; i <= n; i++) {for(int j = 1; j <= n; j++) {int t = e[i][k] + e[k][j] + a[k];if(e[i][j] > t) {e[i][j] = t;p[i][j] = p[i][k];}else if(e[i][j] == t) {if(p[i][j] > p[i][k])p[i][j] = p[i][k];}}}}}int main() {int n;while(~scanf("%d",&n)&&n) {for(int i = 1; i <= n; i++) {for(int j = 1; j <= n; j++) {scanf("%d",&e[i][j]);}}for(int i = 1; i <= n; i++) scanf("%d",&a[i]);init(n);floyd(n);int fr , to;while(~scanf("%d%d",&fr,&to)) {if(fr == -1 && to == -1)break;int end = fr;printf("From %d to %d :\n",fr,to);printf("Path: ");printf("%d",fr);while(end != to) {printf("-->%d",p[end][to]);end = p[end][to];}printf("\n");printf("Total cost : %d\n",e[fr][to]);printf("\n");}}return 0;}

AcceptedTime31msMemory1952kBLength1712LangG++Submitted2017-12-24 20:50:38SharedRemoteRunId23388578
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 玖玖鸭霸王 玖玖稳定资源 玖玖总站资源365免费 玖玖总站资源 玖玖365日每天更新 日韩玖玖zyzz资源站365 玖玖365定更新 999zyz玖玖免费资源 宜室宜家 玖玖 先锋玖玖zy资源站 朽木逢春 玖玖 玖玖爱六粮面 玖玖365资源站 玖玖爱资源网 玖玖金融可信吗 玖玖金融怎么样 玖玖鱼瓷砖背景墙 玖玖鱼瓷砖背景墙价格 玖玖金黄金交易 zyzz资源站 影音资源网 久久资源 在线资源 男人资源 玖玖玖影视在线收看 久久资源网 酸甜 醉爱周玖玖 亚渄第一成网玖玖网成 国产在观免费2018玖玖 国产观免费2018玖玖 2019中文字字幕1玖玖在线 玖瑰 玖瑰花泡水有什么好处 玟瑰 玖蔻 玖蔻洗发水曝光 玖蔻洗发水代理价格表 玖鼎 玖龙纸业 玖龙