http://wenku.baidu.com/view/8f1fde586edb6f1aff001f7d.html

#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
typedef long long ll;
#define N 1001
int n,m,S,T,nn;
struct Point{int u,d;};
bool operator < (Point a,Point b){return a.d>b.d;}
int dis[N*N*2+2];
bool vis[N*N*2+2];
priority_queue<Point>q;
int en,v[N*N*3*2],next[N*N*3*2],w[N*N*3*2],first[N*N*2+2];
void AddEdge(int U,int V,int W)
{
v[++en]=V;
w[en]=W;
next[en]=first[U];
first[U]=en;
}
void dijkstra()
{
memset(dis+1,0x7f,sizeof(int)*(nn));
dis[S]=0; q.push((Point){S,0});
while(!q.empty())
{
int U=q.top().u; q.pop();
if(!vis[U])
{
vis[U]=1;
for(int i=first[U];i;i=next[i])
if((ll)dis[v[i]]>(ll)dis[U]+(ll)w[i])
{
dis[v[i]]=dis[U]+w[i];
q.push((Point){v[i],dis[v[i]]});
}
}
}
}
int main()
{
int x;
scanf("%d%d",&n,&m); nn=(n-1)*(m-1)*2+2; S=nn-1; T=nn;
for(int j=1;j<m;++j)
{
scanf("%d",&x);
AddEdge(S,j,x);
AddEdge(j,S,x);
}
for(int i=2;i<n;++i)
for(int j=1;j<m;++j)
{
scanf("%d",&x);
AddEdge(((i<<1)-3)*(m-1)+j,((i<<1)-2)*(m-1)+j,x);
AddEdge(((i<<1)-2)*(m-1)+j,((i<<1)-3)*(m-1)+j,x);
}
for(int j=1;j<m;++j)
{
scanf("%d",&x);
AddEdge(((n<<1)-3)*(m-1)+j,T,x);
AddEdge(T,((n<<1)-3)*(m-1)+j,x);
}
for(int i=1;i<n;++i)
{
scanf("%d",&x);
AddEdge(T,((i<<1)-1)*(m-1)+1,x);
AddEdge(((i<<1)-1)*(m-1)+1,T,x);
for(int j=2;j<m;++j)
{
scanf("%d",&x);
AddEdge(((i<<1)-2)*(m-1)+j-1,((i<<1)-1)*(m-1)+j,x);
AddEdge(((i<<1)-1)*(m-1)+j,((i<<1)-2)*(m-1)+j-1,x);
}
scanf("%d",&x);
AddEdge(((i<<1)-1)*(m-1),S,x);
AddEdge(S,((i<<1)-1)*(m-1),x);
}
for(int i=1;i<n;++i)
for(int j=1;j<m;++j)
{
scanf("%d",&x);
AddEdge(((i<<1)-2)*(m-1)+j,((i<<1)-1)*(m-1)+j,x);
AddEdge(((i<<1)-1)*(m-1)+j,((i<<1)-2)*(m-1)+j,x);
}
dijkstra();
printf("%d\n",dis[T]);
return 0;
}

最新文章

  1. T-SQL:毕业生出门需知系列(七)
  2. etl实现字段值相加
  3. LintCode 463 Sort Integer
  4. Python学习路程day13
  5. 记一个由MemCached引发的性能问题
  6. 使用siege进行Web压力测试
  7. 最全的Android源码目录结构详解(转)
  8. Android Sqlite 导入CSV文件 .
  9. linux 下信号处理命令trap &amp;&amp; linux下各种信号的意义
  10. HDU 2444 The Accomodation of Students(二分图判定+最大匹配)
  11. R语言︱噪声数据处理、数据分组——分箱法(离散化、等级化)
  12. anguar-select2
  13. POJ1006: 中国剩余定理的完美演绎
  14. python 10 迭代器和三元运算符
  15. learn
  16. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(七)RTP音视频传输解析层之H264传输格式
  17. importlib
  18. (转)[Unity3D]BuildPipeline.PushAssetDependencies 打包依赖包,优化UI Prefab的资源引用加载(坑爹之处)
  19. Keras中间层输出的两种方式,即特征图可视化
  20. BZOJ 1878 [SDOI2009]HH的项链 【莫队】

热门文章

  1. at用法小记
  2. taotao单点登录的用户Controller、service(注册、登录、验证是否登录方法)
  3. C# Async await和Task的关系
  4. [lucene系列笔记2]在eclipse里初步使用lucene的索引和查询功能
  5. django自己搭建的博客
  6. C#弱引用
  7. Cannot read property &#39;resetFields&#39; of undefined 问题及引申
  8. AngularJS+BootStrap的一些插件
  9. [POJ1286&amp;POJ2154&amp;POJ2409]Polya定理
  10. [目前未找到题目]扩展KMP模板