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 ...
随机推荐
- eval 简单应用
--> 循环来定义变量 //想定义四个变量 one,two,three,four var initVar = ['one','two','three','four']; initVar.for ...
- static变量引起的问题,List数据覆盖
出现的问题:Listt加载数据时,后面加载的数据会覆盖前面的数据,把后面的数据变得和前面一样 原因:因为刚开始把添加的数据写成了静态变量,所以一个改了以后所有都改了 解决方法:把数据设成普通属性,非静 ...
- 1. ReactNative 基础
/** 1. reactNative 反应式语言 2. 既拥有原生的用户体验,又保留React的开发效率 3. FaceBook研究 H5,Android,iOS 4. BAT的插件化,热修改 2 ...
- Mifare系列5-存储结构(转)
文/闫鑫原创转载请注明出处http://blog.csdn.net/yxstars/article/details/38081521 Mifare S50把1K字节的容量分为16个扇区(Sector0 ...
- 个推,手机推送API的使用
参考:http://www.cnblogs.com/may-25/p/5501804.html 推送成功后返回的任务Id: String contentId = push.getContentId(m ...
- 用FireFox火狐浏览器的3D Tilt 插件查看网页3D视图效果
逛博客发现了网页的3D视图效果,一搜原来是Firefox特有的一个功能,先看效果: 相当炫酷,接下来介绍如何实现. 1.首先安装3d tilt 插件: 从火狐浏览器的添加插件页面,搜索:3D Tilt ...
- Wiki安装
我们推荐使用Mediawiki. MediaWiki是基于php环境的,所以如果需要使用该类wiki,就要先部署php的环境. wiki下载: https://www.mediawiki.org/wi ...
- 在web.xml注册applicationContext.xml配置文件
概要: Spring配置文件是集成了Spring框架的项目的核心,引擎的开始是:容器先是加载web.xml,接着是applicationContext.xml在web.xml里的注册.以下我们将介绍a ...
- IntrospectorCleanupListener作用
<!--web.xml--><listener> <listener-class>org.springframework.web.util.Introspector ...
- 关于java序列化中的一个细节
java序列化机制的可以参考很多资料了,最近在看的时候发现了一些问题. 1. 默认的序列化机制,很多书里讲到序列化类只序列化类名,实例变量,不会实例化类变量(static)和瞬态变量(transien ...