版权声明:本文为博主原创文章,未经博主同意不得转载。

https://blog.csdn.net/u013497151/article/details/30299671

题目链接:

id=1062" rel="nofollow">昂贵的聘礼

   这个题对自己收获挺大的。模板要自己常常敲,才干理解。要自己常常敲,从能温故而知新。自己曾经总结的建图方式。做题的时候要会用,要敢用。否则==NULL。

题意对于交换条件描写叙述的有点不清楚,这里解释一下,如果8件物品,等级差距不能超过3。酋长LV 5。所以能够进行交换的LV区间是[2,5][3,6][4,7][5,8]。不必考虑题目那一句。“可是如果他和某个地位较低的人进行了交易,地位较高的的人不会再和他交易。他们觉得这样等于是间接接触,反过来也一样”。

越看越晕。仅仅要符合以上区间的都能够进行交换。

思路:開始看题时。自己的思路有点偏差,觉得P神仅仅能从价格最廉价、等级最低的那个人開始首次交易,后来敲了。。。再后来。。无从下手了,看了一下Discuss,噢。枚举啊。Discuss上的神牛门大多用Dijkstra 或 Bellman-Ford过的,还剪枝...俺还没学啊。然后,我想Bellman-Ford能过的SPFA肯定也能过。可是SPFA怎么敲,忘了。

。又又一次复习最短路 And 建图方式,开敲1遍A。中间的小细节自己处理的不好,还不会调程序。又叫P神过来了。

。。。

ME        TIME

720kb    32ms

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
const int Size = 99999;
const int INF = 1<<20;
const int N = 101;
const int MMM = 10010;
using namespace std;
int NN,M,l = 0;
struct node{
int v,w,next;
}edge[MMM];
int p[N],lv[N],num,t;
int dis[N],vis[N],lim,low;
int q[MMM],head[MMM]; int SPFA(int S,int E)
{
//printf("low = %d high = %d\n",low,lim);
int s = 0,e = 0;
for(int i = 1;i<=N;i++)
dis[i] = p[1];
dis[S] = 0;
q[e++] = S;
vis[S] = 1;
while(s < e)
{
int tmp = q[s++];
for(int i = head[tmp];i!=0;i=edge[i].next)
{
if((lv[edge[i].v]>=low && lv[edge[i].v]<=lim )&& (dis[edge[i].v]> dis[tmp] + edge[i].w))
{
dis[edge[i].v] = dis[tmp] + edge[i].w;
if(!vis[edge[i].v])
{
q[e++] = edge[i].v;
vis[edge[i].v] = 1;
}
}
}
vis[tmp] = 0;
}
return dis[E];
}
void add(int a,int b,int c) //前向星建图
{
edge[t].v = b;
edge[t].w = c;
edge[t].next = head[a];
head[a] = t;
t++;
}
/*void Print()
{
int k,i;
for(i = 0; i <= NN; i++)
{
if(head[i])
{
for(k = head[i]; k != 0; k = edge[k].next)
{
printf("%d->%d %d\n", i, edge[k].v, edge[k].w);
}
}
}
}*/
int main()
{
int a,b;
while(~scanf("%d%d",&M,&NN))
{
l = 0;
t = 1;
memset(head,0,sizeof(head));
for(int i = 1;i<=NN;i++)
{
scanf("%d%d%d",&p[i],&lv[i],&num);
add(0,i,p[i]);
for(int j = 0;j<num;j++)
{
scanf("%d%d",&a,&b);
add(a,i,b);
}
}
/*puts("-------------");
Print(); //打印图形
puts("-------------");*/ int minn = INF,flag = 0;
for(int i = lv[1]-M;i<=lv[1];i++) //枚举全部可行交换
{
lim = i + M;
low = i;
memset(vis,0,sizeof(vis));
flag = SPFA(0,1);
(flag < minn)?(minn = flag):(minn=minn);
}
printf("%d\n",minn);
}
return 0;
}

POJ -1062 昂贵的聘礼(前向星 &amp;&amp; SPFA)的更多相关文章

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

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

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

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

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

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

  4. POJ 1062 昂贵的聘礼

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

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

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

  6. POJ 1062 昂贵的聘礼(带限制条件的dijkstra)

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

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

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

  8. POJ 1062 昂贵的聘礼(最短路中等题)

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

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

    昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 33365   Accepted: 9500 Descriptio ...

随机推荐

  1. ubuntu server install 安装中文(搜狗)输入法

    1.对于ubuntu server默认无中文输入法框架,我比较倾向于我一直使用的ibus-sunpinyin.这里我需要先安装ibus的框架 不过我遇到了问题: dpkg: dependency pr ...

  2. SharePoint Error occurred in deployment step 'Recycle IIS Application Pool': 0x80070005:拒绝访问

    错误出现的前提:多个用户在一台机器上做开发,使用非系统管理员账号时会出现,因为一般创建网站集时指定管理员为系统管理员: 使用 Visual Studio 2010 部署时报错:Error occurr ...

  3. _T("D:\\122.txt")【字符集问题】或【类型转换问题】

    项目->属性->常规->字符集->使用多字节字符集!时用_T("Filename"), 貌似不是字符集的问题!  1.使用替换,,,后, _T(" ...

  4. 图像的降采样与升采样(二维插值)----转自LOFTER-gengjiwen

    图像的降采样与升采样(二维插值) 1.先说说这两个词的概念: 降采样,即是采样点数减少.对于一幅N*M的图像来说,如果降采样系数为k,则即是在原图中 每行每列每隔k个点取一个点组成一幅图像.降采样很容 ...

  5. 通过notepad++将混乱的xml配置的格式进行美化

    需求描述: 最近在进行hbase配置文件的修改之后,发现xml文件的格式很不美观, 然后,在网上找了些方法,实测,通过notepad++的xml tools插件就可 达到美化效果. 操作过程: 1.以 ...

  6. oracle 中 cursor 与refcursor及sys_refcursor的区别 (转载)

    http://blog.csdn.net/gyflyx/article/details/6889028 引用一.显式cursor 显式是相对与隐式cursor而言的,就是有一个明确的声明的cursor ...

  7. Zookeeper异常org.apache.zookeeper.KeeperException$ConnectionLossException

    在虚拟机上安装了CenOS Linux系统,然后配置好了 zookeeper的集群环境,在本地写了一个Zookeeper测试程序,如下: package com.xbq.zookeeper; impo ...

  8. RecyclerView的通用适配器,和滚动时不加载图片的封装

    对于RecyclerView我们需要使用RecyclerAdapter,使用方式与ListViewAdapter类似,具体代码大家可以在网上搜索,这里就只教大家使用封装后的简洁RecyclerAdap ...

  9. 关于MCU的烧录,下载与其他接口的比较(二)

    单片机应用系统由硬件和软件组成,软件的载体是硬件的程序存储器,程序存储器采用只读存储器,这种存储器在电源关闭后,仍能保存程序,在系统上电后,CPU可取出这些指令重新执行.只读存储器(Read Only ...

  10. C语言的基本构成

    C语言的基本构成 知识点:C语言的注释:关键字:书写风格:常量和变量 重要程度:★★★★ 1.C语言的良好风格 用C语言编写的程序,称为C语言源程序,简称C程序. 本节将通过一个简单的C程序例子,向大 ...