博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1062
阅读量:6125 次
发布时间:2019-06-21

本文共 1265 字,大约阅读时间需要 4 分钟。

单源最短路径,此题主要是要理解题目的意思。根据“他和某个地位较低的人进行了交易,地位较高的的人不会再和他交易,他们认为这样等于是间接接触,反过来也一样。”这句话可知,一定要在一符合要求的区间(这个区间的上限和下限要符合等级限制,并且要包括编号1)里找,然后把所有符合要求的区间的值进行比较,从而得到在限制条件下的最短路径

#include 
using namespace std;#define maxn 201#define INF 2<<20int edge[maxn][maxn];int inlim[maxn],lev[maxn],val[maxn];int n,m;int dijkstra()//求当前等级区间中的最小消费{ int i,j; int lc[maxn],vis[maxn]; for(i=2;i<=n;i++) { lc[i]=edge[1][i]; vis[i]=0; } vis[1]=1,lc[1]=0; int mc,k; for(i=1;i
lc[k]+edge[k][j]) lc[j]=lc[k]+edge[k][j]; } } int tot=INF; for(i=1;i<=n;i++) { if(inlim[i])//任何操作都是在选定区间中进行,也就是说其他的点就当不存在一样 { lc[i]+=val[i];//编号1到各点的最短路径还得加上买它本身所用的价钱,这样才能判断哪个路径消费最少 if(lc[i]
>m>>n) { int i,t,j; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { edge[i][j]=i==j?0:INF; } } int ta,tv; for(i=1;i<=n;i++) { cin>>val[i]>>lev[i]>>t; for(j=0;j
>ta>>tv; edge[i][ta]=tv; } } int bas=lev[1]; int mc=INF,tc; for(i=0;i<=m;i++) { memset(inlim,0,sizeof(inlim)); for(j=1;j<=n;j++)//每次选定一个满足“但是如果他和某个地位较低的人进行了交易,地位较高的的人不会再和他交易,他们认为这样等于是间接接触,反过来也一样”的区间 { if((lev[j]>=(bas-i))&&(lev[j]<=(bas-i+m))) inlim[j]=1; } tc=dijkstra(); if(tc

转载于:https://www.cnblogs.com/lj-vs-lishimin/archive/2012/10/26/2774371.html

你可能感兴趣的文章
Spark综合使用及用户行为案例区域内热门商品统计分析实战-Spark商业应用实战...
查看>>
初学者自学前端须知
查看>>
Retrofit 源码剖析-深入
查看>>
企业级负载平衡简介(转)
查看>>
ICCV2017 论文浏览记录
查看>>
科技巨头的交通争夺战
查看>>
当中兴安卓手机遇上农行音频通用K宝 -- 卡在“正在通讯”,一直加载中
查看>>
Shell基础之-正则表达式
查看>>
JavaScript异步之Generator、async、await
查看>>
讲讲吸顶效果与react-sticky
查看>>
c++面向对象的一些问题1 0
查看>>
直播视频流技术名词
查看>>
网易跟贴这么火,背后的某个力量不可忽视
查看>>
企业级java springboot b2bc商城系统开源源码二次开发-hystrix参数详解(八)
查看>>
java B2B2C 多租户电子商城系统- 整合企业架构的技术点
查看>>
IOC —— AOP
查看>>
比特币现金将出新招,推动比特币现金使用
查看>>
数据库的这些性能优化,你做了吗?
查看>>
某大型网站迁移总结(完结)
查看>>
mysql的innodb中事务日志(redo log)ib_logfile
查看>>