hdu1428之dfs+spfa
漫步校园
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2421 Accepted Submission(s): 715
1 2 3
1 2 3
1 2 3
3
1 1 1
1 1 1
1 1 1
6
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<queue>
#include<algorithm>
#include<map>
#include<iomanip>
#define INF 99999999
using namespace std; const int MAX=50+10;
__int64 s[MAX][MAX],dist[MAX][MAX],sum[MAX][MAX];
bool mark[MAX][MAX];
int dir[4][2]={1,0,-1,0,0,1,0,-1};
int n; void spfa(int x,int y){
int a,b,oq;
queue<int>q;
q.push(x*n+y);
mark[x][y]=true;
while(!q.empty()){
oq=q.front();
q.pop();
a=oq/n,b=oq%n;
mark[a][b]=false;
for(int i=0;i<4;++i){
x=a+dir[i][0];
y=b+dir[i][1];
if(x<0 || y<0 || x>=n || y>=n)continue;
if(dist[a][b]+s[x][y]<dist[x][y]){
dist[x][y]=dist[a][b]+s[x][y];
if(!mark[x][y])q.push(x*n+y);
mark[x][y]=true;
}
}
}
} __int64 dfs(int a,int b){
if(mark[a][b])return sum[a][b];
int x,y;
for(int i=0;i<4;++i){
x=a+dir[i][0];
y=b+dir[i][1];
if(x<0 || y<0 || x>=n || y>=n)continue;
if(dist[x][y]>=dist[a][b])continue;
sum[a][b]+=dfs(x,y);
}
mark[a][b]=true;
return sum[a][b];
} void Init(int n){
for(int i=0;i<n;++i){
for(int j=0;j<n;++j){
dist[i][j]=INF;
sum[i][j]=0;
mark[i][j]=false;
}
}
dist[n-1][n-1]=s[n-1][n-1];
sum[n-1][n-1]=1;
} int main(){
while(~scanf("%d",&n)){
for(int i=0;i<n;++i){
for(int j=0;j<n;++j)scanf("%d",&s[i][j]);
}
Init(n);
spfa(n-1,n-1);
mark[n-1][n-1]=true;
printf("%I64d\n",dfs(0,0));
}
return 0;
}
hdu1428之dfs+spfa的更多相关文章
- Dfs+Spfa【p1606】[USACO07FEB]荷叶塘Lilypad Pond
Description 为了让奶牛们娱乐和锻炼,农夫约翰建造了一个美丽的池塘.这个长方形的池子被分成了M行N列个方格(1≤M,N≤30).一些格子是坚固得令人惊讶的莲花,还有一些格子是岩石,其余的只是 ...
- Luogu P1768 天路 0/1分数规划+dfs spfa
“那是一条神奇的天路诶~~把第一个神犇送上天堂” 怕不是某大佬早就A了这题,然鹅我又调了很久很久... 好吧就是0/1分数规划,但是跑的dfs的spfa(好像题解说bfs过不了????不知) 发现把s ...
- NOIP2009T3最优贸易(Dfs + spfa)
洛谷传送门 看到这个题,原本想先从后往前dfs,求出能到终点的点,再在这些点里从前往后spfa,用一条边上的两个城市的商品价格的差来作边权,实施过后,发现图中既有负边权,又有回路,以及各种奇奇怪怪的东 ...
- ACM/ICPC 之 DFS+SPFA-贪心+最短路(POJ2679)
//POJ2679 //DFS+SPFA+邻接表 //只能走每个点费用最小的边,相同则需保证距离最短 //求最小费用及最短距离 //Time:47Ms Memory:900K #include< ...
- 【洛谷】【搜索(dfs)】P3956 棋盘
题目传送门:戳 题目描述: 有一个 \(m * m\) 的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色 ...
- 蓝书3.3 SPFA算法的优化
T1 最小圈 bzoj 1486 题目大意: 一个环的权值平均值为定义为一个这个环上所有边的权值和除以边数 求最小的环的权值平均值 思路: 二分一个值 把所有边减去这个值 判断是否有负环 #inclu ...
- 【洛谷P3385】模板-负环
这道题普通的bfs spfa或者ballen ford会T 所以我们使用dfs spfa 原因在于,bfs sfpa中每个节点的入队次数不定,退出操作不及时,而dfs则不会 既然,我们需要找负环,那么 ...
- 【63测试20161111】【BFS】【DP】【字符串】
第一题: tractor 题目描述 农场上有N(1 <= N <= 50,000)堆草,放在不同的地点上.FJ有一辆拖拉机,也在农场上.拖拉机和草堆都表示为二维平面上的整数坐标,坐标值在1 ...
- 11.13 noip模拟试题
题目名称 笔记 括号 城堡可执行文件名 note brackets castle输入文件名 note.in brackets.in castle.in输出文件名 note.in brackets.ou ...
随机推荐
- CheckBox in ListView
CheckBox in ListView Listview 在android中是经常用的组件,一些特殊情况下,系统提供的list view item 不够用, 不能满足需求,那么就需要自定义listV ...
- C#2.0--集合--转载车老师
集合在编程的过程中用的是非常的多,如GridViewRowCollection.ConnectionStringSettingsCollection.NameValueCollection等等.一般来 ...
- Eclipse更改默认工作目录的方法
参考: Eclipse更改默认工作目录的方法:http://blog.163.com/take_make/blog/static/208212210201272611406227/ 用记事本打开&qu ...
- Maven坐标 groupId artifactId version packaging classifier name
groupId定义项目属于哪个组,这个组往往和项目所在的组织或公司存在关联.譬如在googlecode上建立一个名为myapp的项目,那么groupId就应该是com.googlecode.myapp ...
- uva 10692 - Huge Mods(数论)
题目链接:uva 10692 - Huge Mods 题目大意:给出一个数的次方形式,就它模掉M的值. 解题思路:依据剩余系的性质,最后一定是行成周期的,所以就有ab=abmod(phi[M])+ph ...
- JQuery - 点击,滚动回到顶部 / 底部刷新回到顶部
if ($(document).scrollTop() != 0) { //刷新之后,回到顶部 $('body,html').animate({ scrollTop: 0 }, 500); }
- p类型最大可定义范围
t7(16) TYPE p DECIMALS 14,
- JSP的学习(2)——语法知识一
上一篇<JSP的学习>讲述了JSP的一些基础知识和底层原理,本篇将来学习JSP所需掌握的语法知识等. JSP的语法主要包括以下几个部分的内容: 1) JSP模板元素 2) ...
- Tomcat详细用法学习(四)
本篇接上一篇<Tomcat详细用法学习(三)>,主要讲解配置虚拟主机.打包web应用成war包和Tomcat的体系结构 对于Tomcat服务器,可以放置多个网站(多个web应用),这就是讲 ...
- asp.net iis URLRewrite 实现方法详解
原文 asp.net iis URLRewrite 实现方法详解 实现非常简单首先你要在你的项目里引用两个dll:actionlessform.dll.urlrewriter.dll,真正实现重写的是 ...