题意:/*你是某个岛国(ACM-ICPC Japan)上的一个苦逼程序员,
你有一个当邮递员的好基友利腾桑遇到麻烦了:
全岛有一些镇子通过水路和旱路相连,走水路必须要用船,在X处下船了船就停在X处。
而且岛上只有一条船,下次想走水路还是得回到X处才行;
两个镇子之间可能有两条以上的水路或旱路;
邮递员必须按照清单上的镇子顺序送快递
(镇子可能重复,并且对于重复的镇子不允许一次性处理,比如ABCB的话B一定要按顺序走两次才行)。*/

思路:弗洛伊德求出弗洛伊德求出陆路,水路任意两点间的最短距离,然后动态规划求解。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<vector>
#include<set>
#include<queue>
#include<string>
#include<algorithm>
#define MAXSIZE 1005
#define LL long long
#define INF 0x3f3f3f
using namespace std; int lmap[MAXSIZE][MAXSIZE],smap[MAXSIZE][MAXSIZE],dp[MAXSIZE][MAXSIZE],q[MAXSIZE],n,m; int solve()
{
for(int k=;k<=n;k++) //弗洛伊德求出陆路,水路任意两点间的最短距离
{
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
lmap[i][j] = min(lmap[i][j],lmap[i][k]+lmap[k][j]);
smap[i][j] = min(smap[i][j],smap[i][k]+smap[k][j]);
}
}
}
dp[][q[]] = ; //初始在第一个城市
for(int i=;i<=m;i++) //现在派送的城市
{
for(int j=;j<=n;j++) //枚举船在那个城市
{
dp[i][j] = min(dp[i][j],dp[i-][j]+lmap[q[i-]][q[i]]);
for(int k=;k<=n;k++) //枚举把船停到那个城市
{
dp[i][k] = min(dp[i][k],dp[i-][j]+lmap[q[i-]][j]+smap[j][k]+lmap[k][q[i]]);
}
}
} int minn = INF;
for(int i=;i<=n;i++)
{
if(minn > dp[m][i])
minn = dp[m][i];
}
return minn;
} void Init()
{
for(int i=;i<MAXSIZE;i++)
{
for(int j=;j<MAXSIZE;j++)
{
if(i == j)
{
//dp[i][j] = 0;
lmap[i][j] = ;
smap[i][j] = ;
}
else
{ lmap[i][j] = INF;
smap[i][j] = INF;
}
dp[i][j] = INF;
}
}
} int main()
{
char op[];
int u,v,w;
while(scanf("%d%d",&n,&m),n+m)
{
Init();
for(int i=;i<=m;i++)
{
scanf("%d%d%d%s",&u,&v,&w,op);
if(op[] == 'L')
{
lmap[u][v] = lmap[v][u] = min(lmap[u][v],w);
} else
{
smap[u][v] = smap[v][u] = min(smap[u][v],w);
}
} scanf("%d",&m);
for(int i=;i<=m;i++)
scanf("%d",&q[i]); int ans = solve(); printf("%d\n",ans);
}
return ;
}

最新文章

  1. CocoaPods安装及使用《转》
  2. MySQL字符集的修改和查看
  3. 好久没弄了,来个最简的centos下的Iptables文件存照吧。
  4. ECSHOP首页调用指定分类下的商品
  5. 字符串copy
  6. Python之路Day13
  7. WinForm----DataGridview---连接数据库,以及双击一条数据,显示信息到Label控件,也可以是TextBox控件。
  8. docker学习(一)
  9. Linux云计算运维-MySQL
  10. Autofac使用
  11. Servlet+jSP+java实现商品信息和流水的操作
  12. windows server 2012R2 故障转移集群配置
  13. P1262 间谍网络
  14. 微信小程序获取当前地址以及选择地址详解 地点标记
  15. Linux 动态链接库(.so)的使用
  16. openstack 部署笔记--dashboard
  17. 基于OpenGL编写一个简易的2D渲染框架-11 重构渲染器-Renderer
  18. Android开源库集合(控件)
  19. puppeteer截图
  20. python日期格式转换小记

热门文章

  1. 快速入门Splay
  2. 二进制部署 Kubernetes 集群
  3. yum工具的使用
  4. 解决phpmyadmin 遇见的问题
  5. 【JQ】jq动态绑定事件.on()、解绑事件off()
  6. JAVA核心技术I---JAVA基础知识(函数)
  7. js替换全部,js检查输入的日期是否是一个正确的日期格式
  8. 使用 python -m SimpleHTTPServer 快速搭建http服务
  9. ruby----controller中简单的增删改 方法定义
  10. Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user&#39;s experience. For more jquery-1.12.4.js:10208