题目大意及分析:一道简单的最短路。。。好几天没写程序了,憋得难受!!!

代码如下:

# include<iostream>
# include<cstdio>
# include<cstring>
# include<vector>
# include<queue>
# include<algorithm>
using namespace std; const int INF=1<<30; struct Edge
{
int to,w,nxt;
};
Edge G[35000];
int a[5][105],n,t;
int v[5],head[505],cnt;
int d[505]; bool read(int &val)
{
val=0;
char c;
while(c=getchar()){
if(c=='\n') return false;
else if(c==' ') return true;
else val=val*10+c-'0';
}
} void addEdge(int fr,int to,int w)
{
G[cnt].to=to;
G[cnt].w=w;
G[cnt].nxt=head[fr];
head[fr]=cnt++; G[cnt].to=fr;
G[cnt].w=w;
G[cnt].nxt=head[to];
head[to]=cnt++;
} int spfa()
{
fill(d,d+500,INF);
queue<int>q;
for(int i=0;i<500;i+=100){
d[i]=0;
q.push(i);
}
while(!q.empty()){
int u=q.front();
q.pop();
for(int i=head[u];i!=-1;i=G[i].nxt){
int nu=G[i].to;
if(d[nu]>d[u]+G[i].w){
d[nu]=d[u]+G[i].w;
q.push(nu);
}
}
}
int res=INF;
for(int i=0;i<500;i+=100)
res=min(res,d[t+i]);
return res;
} int main()
{
while(~scanf("%d%d",&n,&t))
{
for(int i=0;i<n;++i) scanf("%d",v+i);
cnt=0;
memset(head,-1,sizeof(head));
getchar();
for(int i=0;i<n;++i){
a[i][0]=0;
int val;
while(read(val))
{
a[i][++a[i][0]]=val;
}
a[i][++a[i][0]]=val;
}
for(int i=0;i<n;++i)
for(int j=1;j<=a[i][0];++j)
for(int k=j+1;k<=a[i][0];++k)
addEdge(i*100+a[i][j],i*100+a[i][k],(a[i][k]-a[i][j])*v[i]);
for(int i=0;i<100;++i)
for(int j=0;j<500;j+=100)
for(int k=j+100;k<500;k+=100)
addEdge(i+j,i+k,60);
int ans=spfa();
if(ans==INF)
printf("IMPOSSIBLE\n");
else printf("%d\n",ans);
}
return 0;
}

  

UVA-10801 Lift Hopping (最短路)的更多相关文章

  1. uva 10801 - Lift Hopping(最短路Dijkstra)

    /* 题目大意: 就是一幢大厦中有0-99的楼层, 然后有1-5个电梯!每个电梯有一定的上升或下降速度和楼层的停止的位置! 问从第0层楼到第k层最少经过多长时间到达! 思路:明显的Dijkstra , ...

  2. UVA 10801 Lift Hopping 最短路

    2种方式直接代码就可以了.注意首次不需要60S的转换 #include <map> #include <set> #include <list> #include ...

  3. UVA 10801 Lift Hopping 电梯换乘(最短路,变形)

    题意: 有n<6部电梯,给出每部电梯可以停的一些特定的楼层,要求从0层到达第k层出来,每次换乘需要60秒,每部电梯经过每层所耗时不同,具体按 层数*电梯速度 来算.问经过多少秒到达k层(k可以为 ...

  4. UVa 10801 - Lift Hopping(dijkstra最短路)

    根据题意,以每一层楼为顶点,每个电梯可以到达的两层楼之间的秒数为每一条边的权值,以此构建一个无向图.然后利用dijkstra求出最短的时间,注意每次换乘电梯需要等待60s(因为同一个电梯上的楼层是相互 ...

  5. UVa 10801 Lift Hopping (Dijkstra)

    题意:有一栋100层的大楼(标号为0~99),里面有n个电梯(不超过5个),以及要到达的层数(aid),然后是每个电梯走一层所需的时间, 再n行就是对应每个电梯可以到达的层数,数量不定.然后每装换一次 ...

  6. UVa 10801 Lift Hopping / floyd

    乘电梯 求到目标层的最短时间 有n个电梯 换一个电梯乘需要额外60秒 所以建图时每个电梯自己能到的层数先把时间算好 这是不需要60秒的 然后做floyd时 如果松弛 肯定是要换电梯 所以要加60秒 # ...

  7. UVA 10801 Lift Hopping

    算是一道需要动脑筋的最短路问题了,关键在于建图部分,对于n个电梯中每一个都要经过cnt个楼层,a[0],a[1],a[2],a[3],a[4],......a[cnt-1],那么对于任意两个楼层a[j ...

  8. UVa 10801 Lift Hopping【floyd 】

    题意:给出n个电梯,每个电梯的运行时间,每个电梯只能在相应的楼层停靠,而且没有楼梯,再给出想去的楼层,问从0层能否到达想去的楼层,求到达的最短时间 建图还是没有建出来--- 因为n<100,可以 ...

  9. 紫书 习题 11-7 UVa 10801 (单源最短路变形)

    把每个电梯口看作一个节点, 然后计算边的权值的时候处理一下, 就ok了. #include<cstdio> #include<vector> #include<queue ...

  10. UVA 11248 - Frequency Hopping(网络流量)

    UVA 11248 - Frequency Hopping 题目链接 题意:给定一个网络,如今须要从1到N运输流量C,问是否可能,假设可能输出可能,假设不可能,再问能否通过扩大一条边的容量使得可能,假 ...

随机推荐

  1. PGA结构

    当客户端向服务器发送连接请求,服务器监听到客户端的请求,在专用服务器模式下,会在服务器端衍生一个server process来代理客户的请求,server process进而向实例发起连接,创建会话, ...

  2. CVP沙龙

    关于职场: 35岁之后,还去招聘网站投简历? 35岁可能是个分水岭 95后比一些80后还强, 有些80后玻璃心 35岁有的可能已经是VP了 应该深入积累而不是蜻蜓点水 只有第一年成长了,之后是重复劳动 ...

  3. Mongo副本集的配置以及php node.js连接使用副本集

    最近弄了下mongodb的副本集, 首先说下没有认证情况的副本集,相对比较简单,因为环境有限,我在同一台服务器上做了模拟. --rest参数是打开web监控页面,比如我们这里监听37017端口,则打开 ...

  4. s3对象存储

    bkstorages 模块帮助你在蓝鲸应用中使用多种文件存储服务作为后端,用于加速静态资源,管理用户上传文件. 自定静态文件 storage 如果通过修改配置文件满足不了你的需求,你随时可以通过继承 ...

  5. JS事件常用事件

    oncontextmenu对象右击 举例1: <form id="form1" name="form1" method="post" ...

  6. AE开发的一个想法

    基于字典进行GIS图形进行编辑. 图层信息 大类别 字典项(属性字段) 居民点 控制点 GPS控制点 线状道路 铁路 省道 国道 一般公路 名称 长度 等级 备注 线状水系 面状道路 面状水系 湖泊 ...

  7. python之redis模块

    一.redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(s ...

  8. Spark Shuffle(二)Executor、Driver之间Shuffle结果消息传递、追踪(转载)

    1. 前言 在博客里介绍了ShuffleWrite关于shuffleMapTask如何运行,输出Shuffle结果到Shuffle_shuffleId_mapId_0.data数据文件中,每个exec ...

  9. hbase Java API 介绍及使用示例

    几个相关类与HBase数据模型之间的对应关系  java类 HBase数据模型 HBaseAdmin 数据库(DataBase) HBaseConfiguration HTable 表(Table) ...

  10. Python第二弹--------类和对象

    Python中的任何一条数据都是对象.每个对象都由3部分组成:标识.类型和值.对象的标识代表该对象在内存中的存储位置(因此是不可更改的),对象的类型表明它可以拥有数据和值的类型. 创建 Dog 类根据 ...