#include<iostream>
#include<stdio.h>
#define MAXN 105
#define inf 10000000
using namespace std; struct dest
{
int next;
int len;
}; struct node
{
int money;
int stat;
int dest_num;
dest coll[MAXN];
};
int give_ans(int rang_b,int rang_e);
void Dijkstra(int m,int s);
node man[MAXN];
int _m[MAXN][MAXN];
int dij[MAXN];
bool last[MAXN];
int n;
int main()
{
//freopen("acm.acm","r",stdin);
int m;
int i;
int j;
int tem;
int min;
int rang_begin;
int rang_end;
cin>>m>>n;
memset(last,false,sizeof(last));
for(i = ; i < n; ++ i)
{
cin>>man[i].money;
cin>>man[i].stat;
cin>>man[i].dest_num;
if(man[i].dest_num == )
last[i] = true;
for(j = ; j < man[i].dest_num; ++ j)
{
cin>>man[i].coll[j].next;
-- man[i].coll[j].next;
cin>>man[i].coll[j].len;
}
}
min = inf;
for(i = ; i <= m; ++ i)
{
rang_begin = man[].stat;
rang_end = rang_begin;
rang_begin -= (m - i);
rang_end += i;
// cout<<rang_begin<<" "<<rang_end<<endl;
tem = give_ans(rang_begin,rang_end);
// cout<<tem<<" 8888888888888888"<<endl;
if(tem < min)
min = tem;
//cout<<min<<endl;
}
if(min != inf)
cout<<min<<endl;
else
cout<<man[].money<<endl;
} int give_ans(int rang_b,int rang_e)
{
int i;
int j;
int _min;
for(i = ; i < n; ++ i)
{
for(j = ; j < n; ++ j)
{
_m[i][j] = inf;
}
}
for(i = ; i < n; ++ i) ///////////////敏感地区
{
if(man[i].stat >= rang_b && man[i].stat <= rang_e)
for(j = ; j < man[i].dest_num; ++ j)
{
if(man[man[i].coll[j].next].stat >= rang_b && man[man[i].coll[j].next].stat <= rang_e)
{
_m[i][man[i].coll[j].next] = man[i].coll[j].len;
// if(man[man[i].coll[j].next].dest_num == 0)
// _m[i][man[i].coll[j].next] += man[man[i].coll[j].next].money;
}
}
}
// cout<<"b dij"<<endl;
// for(i = 0; i < n; ++ i)
// {
// cout<<i<<" ";
// for(j = 0; j < n; ++ j)
// {
// if(_m[i][j] != inf)
// cout<<j<<" ";
// }
// cout<<endl;
// }
Dijkstra(n,);
// cout<<"DIJ"<<endl;
_min = inf;
for(i = ; i < n; ++ i)
{
if(dij[i] != - && dij[i] < _min)
{
_min = dij[i];
}
}
return _min;
} void Dijkstra(int m,int s)
{
int i;
int j;
int min;
int * mark = new int[m];
memset(mark,,m*sizeof(int));
memset(dij,-,sizeof(dij));
dij[s] = ;
mark[s] = ;
int x;
int k;
min = -;
for(i = ; i < m; ++ i)
{
if(_m[s][i] != inf)
dij[i] = _m[s][i];
}
for(k = ; k < m; k++)
{
min = -;
for(j = ; j < m; j++)
{
if(mark[j] == && dij[j] > )
{
if(dij[j] < min || min < )
{
min = dij[j];
x = j;
}
}
}
//cout<<"7777777777777"<<endl;
if(min == -)
break;
mark[x] = ;
for(i = ; i < m; ++ i)
{
if(mark[i] == && _m[x][i] != inf)
{ if(dij[i] < || dij[x] + _m[x][i] < dij[i])
{
dij[i] = dij[x] + _m[x][i];
}
}
}
}
for(i = ; i < m; ++ i)
{
if(dij[i] != -)
{
dij[i] += man[i].money;
// cout<<dij[i]<<" ";
}
}
// cout<<endl;
delete []mark;
}

关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。

技术网站地址: vmfor.com

POJ 1062的更多相关文章

  1. POJ 1062 昂贵的聘礼

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

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

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

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

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

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

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

  5. POJ 1062 ( dijkstra )

    http://poj.org/problem?id=1062 一个中文题,一个多月之前我做过,当时我是用搜索写的,不过苦于卡在无法确定等级关系,所以就错了. 看了别人的博客后,我还是不是很理解所谓的枚 ...

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

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

  7. poj 1062(有限制的最短路)

    题目链接:http://poj.org/problem?id=1062 思路:要求对于最短路上的点,不能出现等级之差大于m,于是我们可以枚举,假设酋长的等级为level,于是这个区间范围[level- ...

  8. poj 1062 昂贵的聘礼(最短路 dijk+枚举)

    终于A 了,这题做着真麻烦 题目:http://poj.org/problem?id=1062 dijk 一般用于正权有向图 此题的关键在于等级限制的处理,最好的办法是采用枚举,即假设酋长等级为5,等 ...

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

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

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

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

随机推荐

  1. 2018.08.18 NOIP模拟 game(数位dp)

    Game 题目背景 SOURCE:NOIP2015-SHY4 题目描述 Alice 和 Bob 正在玩一个游戏,两个人从 1 轮流开始报数,如果遇到 7 的倍数或者遇到的这个数的十进制表示中含 7 , ...

  2. 17 Privacy Lost:Dose Anybody Care ? 失去隐私,有人在乎吗 ?

    Privacy Lost:Dose Anybody Care ? 失去隐私,有人在乎吗 ? ①Someday a stranger will read your e-mail without your ...

  3. python操作数据库-安装

    首先是下载软件: 链接:http://pan.baidu.com/s/1nvp1imX 密码:6i0x 之后就是一系列设置. 安装教程:自行百度就行.需要注意的是设置my.ini时,需要加上这些东西( ...

  4. 基于NLP和GAN的小说影视化

    轮廓: https://tieba.baidu.com/p/1271120336 着色:

  5. Scala中()与{}

    Scala中()与{}的关系 在Scala中有些时候()和{}是可以相互替换的,但是如果不弄清楚到底什么时候该用(),什么时候该用{},什么时候二者可以相互替换,那么在写代码的时候难免为出错,并且自己 ...

  6. 博客搬家到 http://leijun00.github.io

    博客园对markdown支持不太好,搬家到 http://leijun00.github.io

  7. Billman_ford货币升值——正权回路

    2240和1860那个题目很像啊 都是问货币能不能增多,钻社会制度得空子啊哈哈 唯一不同得是你的起点是任意一个点,这个比较麻烦了,多了一层循环嘞 处理货币名可以用map分配id 然后就是老套的Bill ...

  8. 关于Windbg Local kernel debugging for Win7

    在使用Windbg的时候,如果在Win7上使用Kernel Debug时候会弹出下面的对话框: 在这个对话框中所描述的信息中我们可以看到这么一段话: “Local kernel debugging i ...

  9. 解决Sublime Text 3中文显示乱码和语法着色问题 等问题

    一:解决sublime中文乱码的问题 简单安装: 1.打开Sublime Text 3,按Ctrl+-打开控制行,复制粘贴以下python代码,然后回车运行. 2. 复制并粘贴如下代码: import ...

  10. vs 2015 结合新配置的IIS 发布网站过程中遇到的问题及解决办法?

    1.由于扩展配置问题而无法提供您请求的页面.如果该页面是脚本,请添加处理程序 错误: HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面.如果该页面是脚本,请添 ...