题目链接: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. js 终止 for 循环

    1.break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句. 2.for循环如果是多层循环 可以将循环命名,跳出指定的循环. first://需要将循环命名 for(var ...

  2. ionic 图片加载失败,显示默认图片代替

    1.首先编写自定义指令 angular.module('starter.directives', []) //当图片找不到事显示替代图片 .directive("errSrc", ...

  3. canvas光晕

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. Oracle,用left join 替代 exists ,not exists,in , not in,提高效率

    Not IN问题 Exists,not Exists,in,not in 例如: FROM YSHB B WHERE YSHA.code=b.code ) 等同于 DELETE A FROM YSHA ...

  5. struts 页面调用Action的指定方法并传递参数

    如果为action配置了类,那么默认就会执行Action类的excute方法,Action类的写法三种: ① public class Action1 { public String execute( ...

  6. 【MySQL】设置字符集UTF-8(解决)

    1.检查你需要的字符集,GBK或者UTF8 2.数据库是否是UTF8, 3.数据表是否是UTF8 4.模板是否设置了UTF-8 以上都没设置错误,那么继续往下看: 进入目标数据库,使用语句: SHOW ...

  7. 【web框架】Django

    一.什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单的说,就是你用别人搭建好的舞台来做表演. 对于所有 ...

  8. 使用AsParallel 进行并行化处理数据

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...

  9. hive 提取用户第一次浏览/购买 某商品的 时间

    Hive虽然强大,但是我们遇到的业务需求必定是千奇百怪的. 在做日志解析的时候,我们会遇到访客,和访次的概念. 对于在2个小时之内的访问,我们认为是访问一次,对于两个小时之外的访问,我们认定是再次访问 ...

  10. mysql安装在centos7报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

    原文链接:http://blog.csdn.net/kuluzs/article/details/51924086 [问题]:mysql版本:5.7.13 首次在centos下安装MySQL,客户端连 ...