poj 3653(最短路)
题目链接:http://poj.org/problem?id=3653
思路:题目意思很简单,就是二维平面上的图,要求起点到终点的最短路。建图略坑,需要坐标映射,化二维为一维。然后就是Dijkstra求最短路了。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
#define MAXN 888
#define inf 1<<30 struct Edge{
int v,w;
Edge(int vv,int ww):v(vv),w(ww){}
}; vector<vector<Edge> >G;
int n,m; int dist[MAXN];
bool mark[MAXN]; bool Dijkstra(int vs,int vt)
{
fill(dist,dist+vt+,inf);
memset(mark,false,sizeof(mark));
dist[vs]=;
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >que;
que.push(make_pair(,vs));
while(!que.empty()){
pair<int,int>pp=que.top();
que.pop();
int d=pp.first,u=pp.second;
if(mark[u])continue;
mark[u]=true;
for(int i=;i<G[u].size();i++){
int v=G[u][i].v,w=G[u][i].w;
if(mark[v])continue;
if(d+w<dist[v]){
dist[v]=w+d;
que.push(make_pair(dist[v],v));
}
}
}
return dist[vt]<inf;
} int main()
{
// freopen("1.txt","r",stdin);
int x,y;
char ch;
while(~scanf("%d%d",&n,&m)){
if(n==&&m==)break;
G.clear();
G.resize((n+)*(m+)+);
for(int i=;i<n;i++){
for(int j=;j<m;j++){
scanf("%d %c",&x,&ch);
if(x==)continue;
if(ch=='*'){
G[i*(m+)+j].push_back(Edge(i*(m+)+j+,/x));
G[i*(m+)+j+].push_back(Edge(i*(m+)+j,/x));
}else if(ch=='>'){
G[i*(m+)+j].push_back(Edge(i*(m+)+j+,/x));
}else if(ch=='<')
G[i*(m+)+j+].push_back(Edge(i*(m+)+j,/x));
}
for(int j=;j<=m;j++){
scanf("%d %c",&x,&ch);
if(x==)continue;
if(ch=='*'){
G[i*(m+)+j].push_back(Edge(i*(m+)+j+m+,/x));
G[i*(m+)+j+m+].push_back(Edge(i*(m+)+j,/x));
}else if(ch=='^'){
G[i*(m+)+j+m+].push_back(Edge(i*(m+)+j,/x));
}else if(ch=='v')
G[i*(m+)+j].push_back(Edge(i*(m+)+j+m+,/x));
}
}
for(int j=;j<m;j++){
scanf("%d %c",&x,&ch);
if(x==)continue;
if(ch=='*'){
G[n*(m+)+j].push_back(Edge(n*(m+)+j+,/x));
G[n*(m+)+j+].push_back(Edge(n*(m+)+j,/x));
}else if(ch=='>'){
G[n*(m+)+j].push_back(Edge(n*(m+)+j+,/x));
}else if(ch=='<'){
G[n*(m+)+j+].push_back(Edge(n*(m+)+j,/x));
}
}
if(Dijkstra(,(n+)*(m+)-)){
printf("%d blips\n",dist[(n+)*(m+)-]);
}else
puts("Holiday");
}
return ;
}
poj 3653(最短路)的更多相关文章
- Heavy Transportation POJ 1797 最短路变形
Heavy Transportation POJ 1797 最短路变形 题意 原题链接 题意大体就是说在一个地图上,有n个城市,编号从1 2 3 ... n,m条路,每条路都有相应的承重能力,然后让你 ...
- POJ 3653 & ZOJ 2935 & HDU 2722 Here We Go(relians) Again(最短路dijstra)
题目链接: PKU:http://poj.org/problem? id=3653 ZJU:problemId=1934" target="_blank">http ...
- poj 1847 最短路简单题,dijkstra
1.poj 1847 Tram 最短路 2.总结:用dijkstra做的,算出a到其它各个点要改向的次数.其它应该也可以. 题意: 有点难懂.n个结点,每个点可通向ki个相邻点,默认指向第一个 ...
- poj 1797(最短路变形)
题目链接:http://poj.org/problem?id=1797 思路:题目意思很简单,n个顶点,m条路,每条路上都有最大载重限制,问1->n最大载重量.其实就是一最短路的变形,定义wei ...
- poj 3013 最短路变形
http://poj.org/problem?id=3013 给出n个点,m个边.给出每个点的权值,每个边的权值.在m条边中选n-1条边使这n个点成为一棵树,root=1,求这棵树的最小费用,费用=树 ...
- poj 2449 k短路+A*算法
http://poj.org/problem?id=2449 K短路的定义: 1.如果起点终点相同,那么0并不是最短路,而是要出去一圈回来之后才是最短路,那么第K短路也是一样. 2.每个顶点和每条边都 ...
- poj 3463 最短路与次短路&&统计个数
题意:求最短路和比最短路长度多1的次短路的个数 本来想图(有)方(模)便(版)用spfa的,结果妹纸要我看看dijkstra怎么解.... 写了三遍orz Ver1.0:堆优化+邻接表,WA //不能 ...
- POJ 1511 最短路spfa
题很简单 就是有向图中求给出的源点到其余所有点的最短路的和与其余所有点到源点的最短路之和 一开始以为dij对于正权图的单源最短路是最快的 写了一发邻接表的dij 结果超时 把所有的cin改成scanf ...
- poj 1502 最短路+坑爹题意
链接:http://poj.org/problem?id=1502 MPI Maelstrom Time Limit: 1000MS Memory Limit: 10000K Total Subm ...
随机推荐
- 算法笔记_167:算法提高 矩阵翻转(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 Ciel有一个N*N的矩阵,每个格子里都有一个整数. N是一个奇数,设X = (N+1)/2.Ciel每次都可以做这样的一次操作:他从矩阵 ...
- Patterns-Flyweight
最近在组里讨论设计模式,第一个是享元模式. 自己贴了一篇这个文章:http://www.cnblogs.com/rush/archive/2011/10/01/2197785.html 感觉这篇讲的不 ...
- malloc、calloc、realloc的区别(转)
(1)C语言跟内存分配方式 <1>从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量.static变量.<2> ...
- IT痴汉的工作现状36-做好准备再上路
软件开发流程管理是採用瀑布式好还是敏捷好? 如今非常多人会选择敏捷.由于眼下的现状是需求的变化是一天一个样,这是当前(移动)互联网的飞速发展所带来的.当我们仍採用原始的先做全盘的计划.然后在按部就班的 ...
- JS prototype 属性
String.prototype.trim=function(){ return this.replace(/(^\s*)|(\s*$)/g, "");}
- mapper.xml文件
1. 概述 mybatis的真正强大在于它的映射语句.由于它的异常强大,映射器的XML文件就显得相对简单,如果拿它跟具有相同功能的JDBC代码进行对比,省掉将近95%的代码.mybatis是针对SQL ...
- 分页技术框架(Pager-taglib)学习三(pager-taglib中传递参数时中文乱码问题)
一.问题描述 问题: 使用<pg:param name="key" />标签传递中文参数时,会有乱码. 原因: 因为它默认是用gb2312来对添加的参数进行编码,如果你 ...
- Python unittest 参数化
准备工作: pip install nose_parameterized 典型场景:用户名.密码参数化 实例 1,新建一个ftl.py 文件 ,用来将存在于.txt .xlsx 文件中的参数化数据转 ...
- 关于http ,那些你必须知道的事
一,HTTP简介 1,HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览 ...
- 【Objective-C】03-第一个OC程序
一.打开Xcode,新建Xcode项目 二.选择最简单的命令行项目 因为我们只是学习OC语法,还未正式进入iOS开发,所以选择命令行项目即可 三.输入项目名称,选择Foundation框架进行创建项目 ...