hdoj 1385Minimum Transport Cost
卧槽。。。。最近刷的cf上有最短路,本来想拿这题复习一下。。。。
题意就是在输出最短路的情况下,经过每个节点会增加税收,另外要字典序输出,注意a到b和b到a的权值不同
然后就是处理字典序的问题,当松弛时发现相同值的时候,判断两条路径的字典序
代码
#include "stdio.h"
const int MAXN=110;
const int INF=10000000;
bool vis[MAXN];
int pre[MAXN];
int cost[MAXN][MAXN],lowcost[MAXN],b1[MAXN];
int road[MAXN];
using namespace std;
int cmp(int a,int b,int c)
{
int i,len1,len2,j;
int p1[MAXN],p2[MAXN];
int cur=a;
pre[a]=b;
len1=0;
while(cur!=-1)
{
p1[len1++]=cur;
cur=pre[cur];
}
len2=0;
cur=a;
pre[a]=c;
while(cur!=-1)
{
p2[len2++]=cur;
cur=pre[cur];
}
for(i=len1-1,j=len2-1;i>=0&&j>=0;i--,j--)
{
if(p1[i]>p2[j])
return c;
if(p1[i]<p2[j])
return b;
}
if(i==-1)
return b;
if(j==-1)
return c;
}
void dijkstra(int beg,int n)
{
int ans;
int k=0;
for(int i=0; i<n; i++)
{
lowcost[i]=cost[beg][i];
vis[i]=false;
pre[i]=-1;
}
for(int j=0; j<n; j++)
{
int k;
int min=INF;
for(int i=0; i<n; i++)
if(!vis[i]&&lowcost[i]<min)
{
min=lowcost[i];
k=i;
}
if(k==-1)
break;
vis[k]=true;
for(int i=0; i<n; i++)
{
if(cost[k][i]==INF) continue;
if(!vis[i]&&lowcost[k]+cost[k][i]+b1[k]<lowcost[i])
{
lowcost[i]=lowcost[k]+cost[k][i]+b1[k];
pre[i]=k;
}
else if(!vis[i]&&lowcost[k]+cost[k][i]+b1[k]==lowcost[i])
pre[i]=cmp(i,pre[i],k);
}
}
}
void print(int cur)
{
if(pre[cur]!=-1)
print(pre[cur]);
printf("-->%d",cur+1);
}
int main()
{
int n,i,j;
int a,b,c;
int ans,len;
while(scanf("%d",&n)==1,n)
{
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
scanf("%d",&cost[i][j]);
if(cost[i][j]==-1)
cost[i][j]=INF;
}
}
for(i=0; i<n; i++)
scanf("%d",&b1[i]) ;
while(scanf("%d%d",&a,&b)==2)
{
if(a==-1&&b==-1)
break;
a-=1;
b-=1;
len=0;
dijkstra(a,n);
ans=lowcost[b];
printf("From %d to %d :\nPath: %d",a+1,b+1,a+1);
if(a!=b)
print(b);
printf("\n");
printf("Total cost : %d\n\n",ans);
}
}
return 0;
}
这里有一个小插曲,这题和zoj某题一样,搜索hdoj题号,出来的是floyd和dij上面暴力的解法,搜索zoj题号,出来的是dij+dfs解法,引人深思。。。
hdoj 1385Minimum Transport Cost的更多相关文章
- HD1385Minimum Transport Cost(Floyd + 输出路径)
Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- HDU 1385 Minimum Transport Cost (Dijstra 最短路)
Minimum Transport Cost http://acm.hdu.edu.cn/showproblem.php?pid=1385 Problem Description These are ...
- Minimum Transport Cost(floyd+二维数组记录路径)
Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- NSOJ Minimum Transport Cost
These are N cities in Spring country. Between each pair of cities there may be one transportation tr ...
- ZOJ 1456 Minimum Transport Cost(Floyd算法求解最短路径并输出最小字典序路径)
题目链接: https://vjudge.net/problem/ZOJ-1456 These are N cities in Spring country. Between each pair of ...
- HDU1385 Minimum Transport Cost (Floyd)
Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- hdu1385Minimum Transport Cost(最短路变种)
题目链接: huangjing 思路: 输出路径的最短路变种问题..这个题目在于多组询问.那么个人认为用floyd更加稳妥一点.还有就是在每一个城市都有过路费,所以在floyd的时候更改一下松弛条件就 ...
- hdu 1385 Minimum Transport Cost(floyd && 记录路径)
Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- Minimum Transport Cost Floyd 输出最短路
These are N cities in Spring country. Between each pair of cities there may be one transportation tr ...
随机推荐
- jQuery学习笔记(二)jQuery中DOM操作
目录 DOM操作分类 jQuery中的各种DOM操作 查找节点 创建节点 删除节点 复制节点 替换节点 包裹节点 属性操作 样式操作 对HTML.文本和值的操作 遍历节点 CSS-DOM操作 小结 本 ...
- Ubuntu 16.04 LTS 安装 Nginx/PHP 5.6/MySQL 5.7 (LNMP) 与Laravel
Ubuntu 16.04 LTS 安装 Nginx/PHP 5.6/MySQL 5.7 (LNMP) 与Laravel 1.MySQL安装[安装 MariaDB]MariaDB是MySQL的一个分支首 ...
- Android二维码功能实现,在程序内嵌入ZXing项目
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9526247 最近二维码真是越来越火了,随便电视上.网络上.商场里,到处都是二维码. ...
- JavaScript对象的chapterI
对象: 对象就是由一些彼此相关的属性和方法集合在一起而构成的一个数据实体. 一.本地对象: 1.Date——日期对象 var myDate = new Date(); myDate.getFullYe ...
- ubuntu 14.04 vsftpd安装问题
sudo apt-get install vsftpd; 打开允许访问用户名 local_enable=YES write_enable=YES chroot_list_file=/etc/vsftp ...
- Nexpose下载安装注册一条龙
附上两个下载链接: Windows版本(64bit) : http://download2.rapid7.com/download/NeXpose-v4/NeXposeSetup-Windows64. ...
- html5上传图片
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 函数式functor的理解
// 参考 // http://jiyinyiyong.github.io/monads-in-pictures/ // https://llh911001.gitbooks.io/mostly-ad ...
- webpack和gulp的区别
Gulp应该和Grunt比较,他们的区别我就不说了,说说用处吧.Gulp / Grunt 是一种工具,能够优化前端工作流程.比如自动刷新页面.combo.压缩css.js.编译less等等.简单来说, ...
- jsp中jstl标签的类似 if - else 语句 的语法
在jsp中引入jstl的标签库和函数库 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c&q ...