hdu 2992 Hotel booking
http://acm.hdu.edu.cn/showproblem.php?pid=2992
#include <cstdio>
#include <cstring>
#include <map>
#include <vector>
#include <queue>
#define maxn 200
#include <algorithm>
using namespace std; const int inf=0x3fffffff; struct node
{
int v,cost;
};
int g[maxn][maxn],a[maxn],dis[];
int n,m,k;
map<int,int>q;
vector<node>v[];
bool vis[];
int que[]; void inti()
{
q.clear();
for(int i=; i<=n; i++)
{
v[i].clear();
}
for(int i=; i<=m+; i++)
{
for(int j=; j<=m+; j++)
{
g[i][j]=inf;
if(i==j) g[i][j]=;
}
}
} void spfa(int qr)
{
queue<int>qq;
memset(vis,false,sizeof(vis));
for(int i=; i<=n; i++) dis[i]=inf;
dis[qr]=;
qq.push(qr);
vis[qr]=true;
while(!qq.empty())
{
int x=qq.front();
qq.pop();
vis[x]=false;
for(int i=; i<(int)v[x].size(); i++)
{
int v2=v[x][i].v,cost=v[x][i].cost;
if(dis[v2]>dis[x]+cost)
{
dis[v2]=dis[x]+cost;
if(!vis[v2])
{
vis[v2]=true;
qq.push(v2);
}
}
}
}
for(int i=; i<=n; i++)
{
if(dis[i]<=&&q[i]!=)
{
g[q[qr]][q[i]]=;
}
} } void floyd()
{
for(int c=; c<=m+; c++)
{
for(int i=; i<=m+; i++)
{
for(int j=; j<=m+; j++)
{
g[i][j]=min(g[i][j],g[i][c]+g[c][j]);
}
}
}
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
if(n==) break;
scanf("%d",&m);
inti();
for(int i=; i<=m; i++)
{
scanf("%d",&a[i]);
q[a[i]]=i;
}
a[]=;
q[]=;
a[m+]=n;
q[n]=m+;
scanf("%d",&k);
for(int i=; i<k; i++)
{
int u,v1,cost;
scanf("%d%d%d",&u,&v1,&cost);
node st;
st.v=v1;
st.cost=cost;
node st1;
st1.v=u;
st1.cost=cost;
v[u].push_back(st);
v[v1].push_back(st1);
}
for(int i=; i<=m; i++)
{
spfa(a[i]);
}
floyd();
if(g[][m+]==inf)
{
printf("-1\n");
}
else
printf("%d\n",g[][m+]-);
}
return ;
}
hdu 2992 Hotel booking的更多相关文章
- HDU 2992 Hotel booking(BFS+DFS 或者 SPFA+Floyd)
点我看题目 题意 : 一个司机要从1点到达n点,1点到n点中有一些点有宾馆,司机的最长开车时间不能超过10小时,所以要在10小时之内找到宾馆休息,但是为了尽快的走到n点,问最少可以经过几个宾馆. 思路 ...
- Hotel booking(spfa+floyd)
http://acm.hdu.edu.cn/showproblem.php?pid=2992 题意:有n个城市,编号为(1~n),有一些城市中有一些旅店,要求从一个城市到另一个城市不能超过10小时,问 ...
- HDU 2585 [Hotel]字符串递归处理
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2585 题目大意:马克思要找个曾经去过的很好的旅馆,可惜他记不完整旅馆的名字.他有已知的部分信息和可能的 ...
- HDU 2585 Hotel(字符串的模糊匹配+递归)
Problem Description Last year summer Max traveled to California for his vacation. He had a great tim ...
- 再说Play!framework http://hsfgo.iteye.com/blog/806974
这篇帖子的内容我本来想发到 http://www.iteye.com/topic/806660这里的主贴里去的,想挽回被隐藏的命运,但我写完本贴的内容,却发现为时已晚.好吧,我承认,上一个贴的标题容易 ...
- My strength (C-A-R)
My strength: I am good at problem resolving Challenge In the first year when I come to America I pas ...
- Go Revel - main函数分析
运行revel命令时,首先会编译整个项目,在编译时,会根据`app.conf`配置文件生成两个源码文件`tmp/main.go`.`routes/routes.go`,其中`main.go`是整个项目 ...
- spring中的事件 applicationevent 讲的确实不错
event,listener是observer模式一种体现,在spring 3.0.5中,已经可以使用annotation实现event和eventListner里. 我们以spring-webflo ...
- OO问题
设计一个在线的酒店预订系统,并且可以通过城市搜索出来 解决办法: Main Class: User Room Hotel Booking Adress Enums : 房间的状态和类型 public ...
随机推荐
- mongodbOperator
mongodb创建数据库表语句 db.createCollection("CollectionName or tableName"); db.createCollection(&q ...
- J - Air Raid - hdu 1151(最小边覆盖)
题意:给一个有向无环图,求出来最少需要几个士兵可以遍历所有的边. 分析:有向无环图的最小边覆盖 = 点数 - 最大匹配数 为什么是这样的公式??可以思考一下,如果这N个点之间没有边,是不是应该有N个士 ...
- BitmapFactory.decodeByteArray() 返回null,分析与解决
问题描述:用android自带的Camera获取图片,上传至远程数据库中(mysql),以BLOB格式存储, 但在提取图片时,始终无法在android界面显示,示例代码如下: ..... .... ...
- HUNNU--湖师大--11410--Eligibility
[I] Eligibility Regional Contest Director Osama Ismail knows that an individual cannot participate i ...
- [转] java Class类
Class类(在java.lang包中,Instances of the class Classrepresent classes and interfaces in a running Javaap ...
- Java基础知识强化72:正则表达式之判断功能(手机号码判断 和 校验邮箱)
1. 判断功能: 使用了String类的matches方法,如下: public boolean matches(String regex): 2. 判断手机号码的案例: package cn.it ...
- NYOJ528 找球号(三)位运算
找球号(三) 时间限制:2000 ms | 内存限制:3000 KB 难度:2 描述 xiaod现在正在某个球场负责网球的管理工作.为了方便管理,他把每个球都编了号,且每个编号的球的总个数都是 ...
- 95秀-dialog 进度对话框 实用工具
工具Util public class DialogUtil { public static ProgressDialogView progressDialog; /** * ...
- There is already an open DataReader associated with this Connection which must be closed first
使用MVC4 EF Linq获取foreach列表循环的时候遇到了如下的问题:报错提示 There is already an open DataReader associated with this ...
- Dev GridControl 按条件合并相同单元格
Dev 默认的合并方式,只要(垂直方向)相邻两个单元格的值相同都会进行合并,这种方式并不是最优的,所以需要在进行合并的过程中进行判断. 方式如下: 1:先设置需要合并的列为允许合并 OptionsVi ...