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 ...
随机推荐
- PHP网页
1.安装YUM源 2.安装httpd与PHP yum install httpd -y yum install php -y 3.进入htmi文件中 cd /var/www/html/ 4.将自己编写 ...
- ognl.OgnlException: target is null for setProperty(null, "emailTypeNo", [Ljava.lang.String;@1513fd0)
[com.opensymphony.xwork2.ognl.OgnlValueStack] - Error setting expression 'emaiTypeDto.emailTypeNo' w ...
- 。tar.gz(bz或bz2等)安装
tar.gz(bz或bz2等) 一.安装1.打开一个SHELL,即终端2.用cd 命令进入源代码压缩包所在的目录3.根据压缩包类型解压缩文件(*代表压缩包名称)tar -zxvf ****.tar.g ...
- VS2015 使用 Web Deploy 发布网站到 WindowsServer2008 R2服务器详解
使用原因:由于开发期间需要将开发出的网站随时提交到服务器以便公司高层随时访问所以要求将开发出的网站每天发布到服务器,频繁度比较高,因此不能再使用之前的方式(发布到本地后再拷贝文件到服务器),所以想到了 ...
- JSON数据解析
1 JSON简介 JSON(JavaScript Object Notation),类似于XML,是一种轻量级的数据交换格式,比如在JavaEE中Struts2与Ajax在来回传递数据时,除了可以利用 ...
- RabbitMQ详解
本文地址:http://www.host900.com/index.php/articles/351/ 介绍RabbitMQ前,有必须先了解一下AMQP协议.AMQP协议是一个高级抽象层消息通信协议, ...
- asp.net报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决办法
来源:http://ajxfxb.blog.163.com/blog/static/56675086201411634336878/ 作者是:没完没了的工作 asp.net报错“尝试读取或写入受保护的 ...
- github desktop 在线安装失败解决方案
1.问题概述 我的OS是Windows8.1 64位,尝试安装github desktop,始终安装失败:进度到50%左右就炸了.提示说:网络出错.(我100M电信,网络出错?我一直都在上网好吗). ...
- Maven将依赖的所有jar包打成一个jar
有些特殊情况下,需要将多个jar包打包成一个jar文件.如果使用maven可以加入如下插件: <build> <plugins> <plugin> <arti ...
- easyui combobox 左匹配模糊查询
之前一直不知道,easyui 的combobox还有从左匹配查询显示数据的. 样式是这样的:(这是数据是已经存在下拉列表里的) 在这样操作的时候,遇到了一个问题.(其实也不算问题的). 就是操作人员在 ...