UVA 10801(p381)----Lift Hopping
2016-02-27 13:22
357 查看
#include<iostream> #include<cstdio> #include<queue> #include<cmath> #include<cstring> using namespace std; int v[200],dist[200],n,k,lift[200]; int now,g[200][200],t[200]; queue<int> q; void solve() { memset(v,0,sizeof(v)); memset(dist,127,sizeof(dist)); dist[0]=0;q.push(0); while(!q.empty()) { now=q.front(); // cout<<now<<endl; q.pop(); for(int i=0;i<100;i++) { if(now==0) { if(dist[i]>dist[now]+g[now][i]) { dist[i]=dist[now]+g[now][i]; if(!v[i]) { q.push(i); v[i]=true; } } } else if(dist[i]>dist[now]+g[now][i]+60) { dist[i]=dist[now]+g[now][i]+60; if(!v[i]) { q.push(i); v[i]=true; } } } v[now]=false; } } int main() { //freopen("in.in","r",stdin); while(scanf("%d%d",&n,&k)!=EOF&&n) { memset(g,0x3f,sizeof(g)); for(int i=0;i<n;i++) scanf("%d",&t[i]); for(int i=0;i<n;i++) { int num=0,x,c; do{ scanf("%d",&lift[num++]); }while(getchar()!='\n'); for(int j=0;j<num;j++) for(int k=j+1;k<num;k++) { int temp=abs(lift[j]-lift[k])*t[i]; g[lift[j]][lift[k]]=min(g[lift[j]][lift[k]],temp); g[lift[k]][lift[j]]=g[lift[j]][lift[k]]; } } solve(); if(dist[k]<1e9) printf("%d\n",dist[k]); else printf("IMPOSSIBLE\n"); } return 0; }
相关文章推荐
- Hadoop的JobControl设计及用法
- Linux系统组成
- 从Windows上传到linux的文件出现问题
- linux学习之c语言变量所占字节数
- docker 实战---使用oracle xe作为开发数据库(六)
- 常用的rm,cp和mv命令
- hibernate: openSession() 和getCurrentSession()的区别
- 程序2-11 数据统计(fopen版)
- linux下mysql配置文件my.cnf详解
- apache几种限制ip的方法
- OpenGL ES 中Uniform块
- hadoop伪分布式安装
- 用户画像的技术选型与架构实现
- Powershell-Exchange:Generate Health Report
- centos的PHP编译安装模块的基本步骤
- ubuntu配置NFS,挂载开发板
- MMM高可用MySQL服务集群解决方案 推荐
- apache的order allow deny
- linux下创建和删除目录
- u盘安装linux,将grub安装到了u盘,将U盘拔掉后系统无法引导启动的解决方法