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

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. C++ string char[] 转化

    可见到string转char[]相当简单,只要呼叫string class的成员函式c_str(),即可将string转为char[].那么char[]转string呢?有两种方法,第一种是初始str ...

  2. LR中点鼠标做关联(winsock协议)

    转自:http://blog.csdn.net/zeeslo/article/details/1661791 今天写一下winsock的关联操作. 以前看过一个文档.在英文版的讲winsock的,其中 ...

  3. 通过jd2chm工具将html文档生存chm文档方法

    1.下载jd2chm.exe工具 2.下载后解压缩后先安装htmlhelp.exe 3.将jd2chm.exe文件拷贝到index.html所在文件夹中 4.打开命令行进入到index.html所在文 ...

  4. Phpcms V9当前栏目及所有二级栏目下内容调用标签

    在二级栏目列表页调用: <!--* 获取子栏目* @param $parentid 父级id* @param $type 栏目类型* @param $self 是否包含本身 0为不包含* @pa ...

  5. ssh在本地调用远程主机上的命令,不登录远程主机shell

    需求描述: 在实际shell脚本的编写过程中,需要通过ssh远程执行一个命令,并返回执行的结果 简单来说,就是将命令发送到远程的主机上进行执行,但是并没有实际的登录到远程主机上.即通过 ssh的方式本 ...

  6. Don‘t talk.Just do it.

    对于算法,自己掌握的还是不多.并且我发现对于一个算法的理解非常重要.也许你会发现你貌似会用某总算法但是,他一旦变形,自己就无从下手. 还有就是对于算法.最好每次都自己敲,这样不仅能添加对于算法的熟度. ...

  7. Python3 urllib 库

    urllib 简介 urllib 基础模块 使用 urllib 发送请求 使用 urllib 构造请求对象 关于 Handler 与 opener 使用 urllib 进行身份验证 使用 urllib ...

  8. PHP webservice 接口实例

    原文地址,就不摘抄了 http://www.sky00.com/archives/91.html

  9. php学习二:表达式

    1.  可变变量$$ 在php中,可变变量可以用$$来表示, 代码如下: $name = "zhangSan"; $$name = "liSi"; //相当于$ ...

  10. iOS Xcode制作模板类

    转载请注明出处http://blog.csdn.net/uxyheaven/article/details/48419963 为什么要定义模板类 遵守代码规范可以提高代码可读性, 降低后期维护成本. ...