题目链接: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(最短路)的更多相关文章

  1. Heavy Transportation POJ 1797 最短路变形

    Heavy Transportation POJ 1797 最短路变形 题意 原题链接 题意大体就是说在一个地图上,有n个城市,编号从1 2 3 ... n,m条路,每条路都有相应的承重能力,然后让你 ...

  2. POJ 3653 &amp; ZOJ 2935 &amp; HDU 2722 Here We Go(relians) Again(最短路dijstra)

    题目链接: PKU:http://poj.org/problem? id=3653 ZJU:problemId=1934" target="_blank">http ...

  3. poj 1847 最短路简单题,dijkstra

    1.poj  1847  Tram   最短路 2.总结:用dijkstra做的,算出a到其它各个点要改向的次数.其它应该也可以. 题意: 有点难懂.n个结点,每个点可通向ki个相邻点,默认指向第一个 ...

  4. poj 1797(最短路变形)

    题目链接:http://poj.org/problem?id=1797 思路:题目意思很简单,n个顶点,m条路,每条路上都有最大载重限制,问1->n最大载重量.其实就是一最短路的变形,定义wei ...

  5. poj 3013 最短路变形

    http://poj.org/problem?id=3013 给出n个点,m个边.给出每个点的权值,每个边的权值.在m条边中选n-1条边使这n个点成为一棵树,root=1,求这棵树的最小费用,费用=树 ...

  6. poj 2449 k短路+A*算法

    http://poj.org/problem?id=2449 K短路的定义: 1.如果起点终点相同,那么0并不是最短路,而是要出去一圈回来之后才是最短路,那么第K短路也是一样. 2.每个顶点和每条边都 ...

  7. poj 3463 最短路与次短路&&统计个数

    题意:求最短路和比最短路长度多1的次短路的个数 本来想图(有)方(模)便(版)用spfa的,结果妹纸要我看看dijkstra怎么解.... 写了三遍orz Ver1.0:堆优化+邻接表,WA //不能 ...

  8. POJ 1511 最短路spfa

    题很简单 就是有向图中求给出的源点到其余所有点的最短路的和与其余所有点到源点的最短路之和 一开始以为dij对于正权图的单源最短路是最快的 写了一发邻接表的dij 结果超时 把所有的cin改成scanf ...

  9. poj 1502 最短路+坑爹题意

    链接:http://poj.org/problem?id=1502 MPI Maelstrom Time Limit: 1000MS   Memory Limit: 10000K Total Subm ...

随机推荐

  1. Net 服务命令行参考之一

    转自:http://blog.sina.com.cn/s/blog_55035e9501015p05.html ----------------------------------最实用高效的网络管理 ...

  2. CentOS安装glibc-2.14(转)

    到http://ftp.gnu.org/gnu/glibc/下载glibc-2.14.tar.xz tar glibc-2.14.tar.gz cd glibc-2.14 mkdir build cd ...

  3. Linux程序存储结构与进程结构 堆和栈的差别

    摘要:本文主要讲述了Linux系统中.程序存储结构(代码区.数据段和BBS区)与进程的基本结构(代码区.数据段.BBS区.堆和栈).以及堆和栈的差别. Linux程序存储结构与进程结构 1.Linux ...

  4. 你不知道的js技巧

    JS进阶 说起这个应该算是老生常谈了吧.所谓的高级,其实就是讲了一些我们平常用不到(或许用了不知道),但是非常实在的东西.算是熟练掌握js的一个必经road吧. 检测函数类型 其实检测函数的类型应该算 ...

  5. 分享一下自己ios开发笔记

    // ********************** 推断数组元素是否为空 ********************** NSString *element = [array objectAtIndex ...

  6. win7配置两个tomcat(8 & 7)

    背景如下: 电脑中原先tomcat版本是tomcat8,现在要再在其中另配置一个tomcat7,原先tomcat8的配的端口是8089 步骤如下: 1.官网下载tomcat7压缩包解压 2.修改D:\ ...

  7. 为何 IntelliJ IDEA 比 Eclipse 更好

    http://www.oschina.net/news/26929/why-intellij-is-better-than-eclipse圣战 有一些没有唯一正确答案的“永恒”的问题,例如哪个更好:是 ...

  8. Android中的倒计时实现

    一.android.os包下提供了倒计时的抽象工具类: public abstract class CountDownTimer { /** * Millis since epoch when ala ...

  9. MySQL怎样存储IP地址

    为什么要问如何存储IP 首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗? 其实做任何程序设计都要在功能实现的基础上最大限度的优化性能.而数据库设计是程序设计中不 ...

  10. neo4j使用笔记

    #coding:utf- __author__ = 'similarface' # 安装驱动:pip install neo4j-driver from neo4j.v1 import GraphDa ...