终于A 了,这题做着真麻烦

题目:http://poj.org/problem?id=1062

dijk 一般用于正权有向图

此题的关键在于等级限制的处理,最好的办法是采用枚举,即假设酋长等级为5,等级限制为2,那么需要枚举等级从3~5,4~6,5~7

题意就不用说了,做poj以来的第一道中文题目。

要考虑间接身份差异不可行的情况

如:1 4
10000 3 2
2 1
3 3
1000 2 2
4 1
3 1
1000 3 1
4 2
100 4 0
错误程序出104,答案105。

对于这组数据错误的程序是4->3->2->1的,但4和2不能并存

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<stack>
#include<queue>
#include<cmath>
#include<algorithm>
using namespace std; int lim[];
const int INF=<<;
int n;
struct no
{
int p,l,x,a[],b[];
} thing[]; struct node
{
int u,v,w,next;
} edge[];
int head[],dis[],cnt;
void add(int u,int v,int w)
{
edge[cnt].u=u;
edge[cnt].v=v;
edge[cnt].w=w;
edge[cnt].next=head[u];
head[u]=cnt++;
} int dijkstra(int s)
{
int vis[],i,j,min;
for(i=; i<=n; i++)
dis[i]=INF;
memset(vis,,sizeof(vis));
dis[s]=;
for(i=; i<=n; i++)
{
int minn=INF;
int u=s;
for(j=; j<=n; j++)
{
if(!vis[j] && minn>dis[j] &&lim[j]) //lim标记是否在限制条件内
{
minn=dis[j];
u=j;
}
}
for(j=head[u]; j!=-; j=edge[j].next)
{
int v=edge[j].v;
int newdis=minn+edge[j].w;
if(!vis[v] && newdis < dis[v] && lim[v])//lim标记是否在限制条件内
dis[v]= newdis;
}
vis[u]=;
}
min=thing[].p;
for(i=; i<=n; i++) //一组完成后 比较
{
if(dis[i]+thing[i].p<min)
min=dis[i]+thing[i].p;
}
return min;
}
int main()
{
int m,i,j,ans;
scanf("%d%d",&m,&n);
cnt=;
memset(head,-,sizeof(head));
for(i=; i<=n; i++)
{
scanf("%d%d%d",&thing[i].p,&thing[i].l,&thing[i].x);
for(j=; j<=thing[i].x; j++)
{
scanf("%d%d",&thing[i].a[j],&thing[i].b[j]);
}
}
for(i = ; i <= n; i++) //其实我这一步没什么必要,当时想少了,下一步就可以搞定
{
for(j=; j<=thing[i].x; j++)
{
if(abs(thing[i].l-thing[thing[i].a[j]].l)<=m)
add(i,thing[i].a[j],thing[i].b[j]);//倒着建的图
}
}
ans=thing[].p;
for(i=m; i>=; i--)
{
memset(lim,,sizeof(lim));
for(j=; j<=n; j++) //枚举
{
if(thing[j].l>=(thing[].l-i)&&thing[j].l<=(thing[].l+m-i))
lim[j]=;
}
if(dijkstra()<ans)
ans=dijkstra();
}
printf("%d\n",ans);
return ;
}

poj 1062 昂贵的聘礼(最短路 dijk+枚举)的更多相关文章

  1. POJ - 1062 昂贵的聘礼(最短路Dijkstra)

    昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %I64d & %I64u SubmitStatus Descr ...

  2. POJ 1062 昂贵的聘礼 最短路 难度:0

    http://poj.org/problem?id=1062 #include <iostream> #include <cstring> #include <queue ...

  3. POJ 1062 昂贵的聘礼 最短路+超级源点

    Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...

  4. poj 1062 昂贵的聘礼 最短路 dijkstra

    #include <cstdio> #include <cmath> #include <cstring> #include <ctime> #incl ...

  5. 最短路(Dijkstra) POJ 1062 昂贵的聘礼

    题目传送门 /* 最短路:Dijkstra算法,首先依照等级差距枚举“删除”某些点,即used,然后分别从该点出发生成最短路 更新每个点的最短路的最小值 注意:国王的等级不一定是最高的:) */ #i ...

  6. POJ 1062 昂贵的聘礼(图论,最短路径)

    POJ 1062 昂贵的聘礼(图论,最短路径) Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女 ...

  7. poj 1062 昂贵的聘礼 (dijkstra最短路)

    题目链接:http://poj.org/problem?id=1062 昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submission ...

  8. 最短路POJ 1062 昂贵的聘礼

    C - 昂贵的聘礼 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit St ...

  9. POJ 1062 昂贵的聘礼 (最短路)

    昂贵的聘礼 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/M Description 年轻的探险家来到了一个印第安部落里.在那里 ...

  10. poj 1062 昂贵的聘礼 (有限制的最短路)

    昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 56594   Accepted: 17083 Descripti ...

随机推荐

  1. Demo学习: Cookies Demo

    Cookies Demo 浏览器Cookies的读写,最常用的就是记录用户的登录信息,在项目里做登录界面时也用到了Cookies功能. procedure TMainForm.UniButton2Cl ...

  2. 怎样下载安装Firebug和使用Firebug

    Firebug是基于火狐(FireFox)浏览器的一个插件,它的作用是给Web页面开发者一个很好的测试前端页面代码的工具.所以深受网页开发者或网页布局爱好者的喜爱.像我们用DIV+CSS和html所写 ...

  3. 使用JS来实现验证码功能

    最近想为自己的Django博客添加验证码功能,本来想使用第三方库来实现的,不过考虑到添加第三方库对性能的影响,以及第三方库是否安全可靠的问题,还是用自己的代码来实现吧.反正用JS来实现验证码功能又不是 ...

  4. 每日一记:搭建Memcached + php 缓存系统

    服务器环境,Centos6.5 1.安装Memcached服务端 Yum -y install memcached 2.配置Memcached服务端用户以及自动启动服务等 将服务配置成自启动 chkc ...

  5. (转载)Cocos2dx-OpenGL ES2.0教程:初识MVP(3)

    在上一篇文章中,我在介绍vertex shader的时候挖了一个坑:CC_MVPMatrix.它其实是一个uniform,每一个cocos2d-x预定义的shader都包含有这个uniform, 但是 ...

  6. iOS基本网络请求

    常见的网络请求有同步GET, 同步POST, 异步GET, 异步POST. GET请求和POST请求的区别: 1. GET请求的接口会包含参数部分,参数会作为网址的一部分,服务器地址与参数之间通过 ? ...

  7. discuz云平台报调用远程接口失败的问题分析和解决

    根据网络两篇文章整理 问题描述:当开通或关闭某个云平台服务的时候,报如下错误信息:调用远程接口失败.请检查您的服务器是否处于内网以及您服务器的防火墙设置. 云平台测试站点的接口文件正常,于是开始在文件 ...

  8. 移动web开发入门级

    http://www.infoq.com/cn/articles/development-of-the-mobile-web-deep-concept/

  9. stl map高效遍历删除的方法

    for(:iter!=mapStudent.end():) {      if((iter->second)>=aa)      {          //满足删除条件,删除当前结点,并指 ...

  10. php析构函数

    <?php class Page { function __destruct() { echo "__destruct methor invokes<br>"; ...