poj 1062 昂贵的聘礼(floyd path的应用)
题目链接:http://poj.org/problem?id=1062
题意就不解释了中问题。
这题用dfs也行。但是感觉还是floyd比较好一点主要是他们交易是有条件的交易总的等级差不能超过m
所以这时floyd中path的属性就用到了,path[i][j].MAX表示i交易到j最大等级是多少path[i][j].MIN表示最小等级是多少
然后接下来就简单了。
#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
#define inf 0X3f3f3f3f
using namespace std;
int n , m , p , l[110] , x[110] , t[110][110] , v , val[110] , dis[110][110];
struct TnT {
int MAX , MIN;
}path[110][110];
int Abs(int x , int y) {
if(x > y)
return x - y;
else
return y - x;
}
void floyd() {
for(int k = 1 ; k <= n ; k++) {
for(int i = 1 ; i <= n ; i++) {
for(int j = 1 ; j <= n ; j++) {
if(dis[i][j] > dis[i][k] + dis[k][j] && Abs(path[i][k].MAX , path[k][j].MIN) <= m && Abs(path[i][k].MIN , path[k][j].MAX) <= m) {
dis[i][j] = dis[i][k] + dis[k][j];
path[i][j].MAX = max(path[i][k].MAX , path[k][j].MAX);
path[i][j].MIN = min(path[i][k].MIN , path[k][j].MIN);
}
}
}
}
}
int main() {
while(cin >> m >> n) {
for(int i = 1 ; i <= n ; i++) {
for(int j = 1 ; j <= n ; j++) {
path[i][j].MAX = n + 1;
path[i][j].MIN = 0;
dis[i][j] = inf;
}
dis[i][i] = 0;
}
for(int i = 1 ; i <= n ; i++) {
cin >> p >> l[i] >> x[i];
val[i] = p;
path[i][i].MAX = l[i];
path[i][i].MIN = l[i];
for(int j = 1 ; j <= x[i] ; j++) {
cin >> t[i][j] >> v;
dis[i][t[i][j]] = v;
}
}
for(int i = 1 ; i <= n ; i++) {
for(int j = 1 ; j <= x[i] ; j++) {
if(Abs(l[i] , l[t[i][j]]) <= m) {
path[i][t[i][j]].MAX = max(l[i] , l[t[i][j]]);
path[i][t[i][j]].MIN = min(l[i] , l[t[i][j]]);
}
else {
dis[i][t[i][j]] = inf;
}
}
}
floyd();
int MIN = inf;
for(int i = 1 ; i <= n ; i++) {
MIN = min(MIN , dis[1][i] + val[i]);
}
cout << MIN << endl;
}
return 0;
}
poj 1062 昂贵的聘礼(floyd path的应用)的更多相关文章
- 最短路(Dijkstra) POJ 1062 昂贵的聘礼
题目传送门 /* 最短路:Dijkstra算法,首先依照等级差距枚举“删除”某些点,即used,然后分别从该点出发生成最短路 更新每个点的最短路的最小值 注意:国王的等级不一定是最高的:) */ #i ...
- POJ 1062 昂贵的聘礼(图论,最短路径)
POJ 1062 昂贵的聘礼(图论,最短路径) Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女 ...
- poj 1062 昂贵的聘礼 (dijkstra最短路)
题目链接:http://poj.org/problem?id=1062 昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submission ...
- POJ 1062 昂贵的聘礼
C - 昂贵的聘礼 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit St ...
- 最短路POJ 1062 昂贵的聘礼
C - 昂贵的聘礼 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit St ...
- POJ 1062 昂贵的聘礼(带限制条件的dijkstra)
题目网址:http://poj.org/problem?id=1062 题目: 昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submis ...
- POJ -1062 昂贵的聘礼(前向星 && SPFA)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u013497151/article/details/30299671 题目链接:id=1062&qu ...
- POJ 1062 昂贵的聘礼 (最短路)
昂贵的聘礼 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/M Description 年轻的探险家来到了一个印第安部落里.在那里 ...
- POJ 1062 昂贵的聘礼(最短路中等题)
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 51879 Accepted: 15584 Descripti ...
- poj 1062 昂贵的聘礼 (最短路径)
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 33365 Accepted: 9500 Descriptio ...
随机推荐
- 【nodejs原理&源码赏析(9)】用node-ssh实现轻量级自动化部署
目录 一. 需求描述 二. 预备知识 IP+端口访问 域名访问 三. Nodejs应用的手动部署 四. 基于nodejs的自动部署 4.1 package.json中的scripts 4.2 自动化发 ...
- Extjs的textfield的颜色设置和出现的问题笔记
Ext.getCmp('alarmsLevelVal').setFieldStyle('background-color:#ff0000;background-p_w_picpath: none; ' ...
- Mac 10.14.4 编译openjdk1.9源码 及集成clion动态调试
警告⚠️:本文耗时很长,先做好心理准备:编译openjdk源码需要很大的耐心,因为要踩很多坑,解决很多问题,本人从编译开始到结束用了两天时间,按照本篇教程踩坑会少许:谢谢观看 一.获取openjdk源 ...
- word 文档导出 (freemaker+jacob)--java开发
工作中终于遇到了 需要导出word文旦的需求了.由于以前没有操作过,所以就先百度下了,基本上是:博客园,简书,CDSN,这几大机构的相关帖子比较多,然后花了2周时间 才初步弄懂. 学习顺序: 第一阶 ...
- 使用Arthas 获取Spring ApplicationContext还原问题现场
## 背景 最近来了个实习僧小弟,安排他实现对目标网站 连通性检测的小功能,简单讲就是将下边的shell 脚本换成Java 代码来实现 ``` 1#!/bin/bash 2URL="http ...
- Hadoop学习(7)-hive的安装和命令行使用和java操作
Hive的用处,就是把hdfs里的文件建立映射转化成数据库的表 但hive里的sql语句都是转化成了mapruduce来对hdfs里的数据进行处理 ,并不是真正的在数据库里进行了操作. 而那些表的定义 ...
- 12、面向对象的思想(OOP)
面向对象与面向过程 1.都是解决问题的思维方式,都是代码的组织的方式: 2.解决简单的问题可以使用面向过程: 3.解决复杂的问题建议使用面向对象,微观处理依旧会使用面向过程. 对象的进化史(数据管理的 ...
- Java虚拟机——Java内存区域
1.运行时区域 Java虚拟机在执行Java程序的时候会把它管理的内厝划分为若干个不同功能的数据区域,如图所示 首先是程序计数器,程序计数器可以理解为当前程序执行的字节码的行号指示器,计数器中的数据即 ...
- Java——类型信息
1.Class对象 Class对象是一个特殊的对象,它包含了与类有关的信息.Class对象就是用来创建类的所有常规对象的. 类是程序的一部分,每个类都有一个Class对象,每当编写并且编译一个新类,就 ...
- 体验使用MUI上手练习app页面开发
因为公司安排需要先学习一点app开发,而安排学习的框架就是MUI,上手两天体验还算可以(来自后端人员的懵逼),靠着MUI的快捷键可以快速的完成自己想要的样式模板,更多的交互性的内容则需要使用js来完成 ...