[最短路径] POJ 1062 - 昂贵的聘礼
来源:互联网 发布:类似爱情2只有我知国语 编辑:程序博客网 时间:2024/05/11 19:37
本题题意比较难懂,说白了就是兑换的过程中,必须满足主人的最高等级-最低等级<=M,否则不能进行兑换。由于M较小,可以枚举等级的区间。
举个例子:假设主人等级为3,M为2。
那兑换的过程中每个人的等级一定在[1,3] 或 [2,4] 或 [3,5]中的某个区间中。
枚举这个区间,然后倒着求最短路即可。
注意本题是有向图。
#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <algorithm>#include <iostream>#include <set>#include <map>#include <queue>#include <stack>#include <assert.h>#include <time.h>typedef long long LL;const int INF = 500000001;const double EPS = 1e-9;const double PI = acos(-1.0);using namespace std;int graph[105][105];int vis[105], val[105], M, N;void init(){ for(int i = 0; i < 101; i++) { for(int j = 0; j < 101; j++) { graph[i][j] = INF; } }}void Dijkstra(){ for(int i = 2; i <= 100; i++) { val[i] = graph[1][i]; if(!vis[i]) val[i] = INF; } for(int i = 2; i <= N; i++) { int k = -1, minn = INF; for(int j = 2; j <= N; j++) { if(vis[j] == -1 && minn > val[j]) { k = j; minn = val[j]; } } if(k == -1) break; vis[k] = 0; for(int j = 2; j <= N; j++) { if(vis[j] == -1 && val[k] + graph[k][j] < val[j]) { val[j] = val[k] + graph[k][j]; } } }}int main(){ #ifdef _Test freopen("test0.in", "r", stdin); freopen("test0.out", "w", stdout); srand(time(NULL)); #endif int P[1000], L[1000], X, T, V; while(~scanf("%d %d", &M, &N)) { init(); for(int i = 1; i <= N; i++) { scanf("%d %d %d", &P[i], &L[i], &X); for(int j = 0; j < X; j++) { scanf("%d %d", &T, &V); graph[i][T] = V; } } int ans = P[1]; for(int i = max(L[1] - M, 0); i <= L[1]; i++) { memset(vis, -1, sizeof(vis)); for(int ii = 2; ii <= N; ii++) { if(L[ii] < i || L[ii] > i + M) { vis[ii] = 0; } } Dijkstra(); for(int j = 2; j <= N; j++) { ans = min(ans, val[j] + P[j]); } } printf("%d\n", ans); } return 0;}
0 0
- POJ 1062 昂贵的聘礼(最短路径Dijkstra+枚举)
- POJ 1062昂贵的聘礼(最短路径.Dijkstra)
- POJ 1062 昂贵的聘礼 (最短路径)
- [最短路径] POJ 1062 - 昂贵的聘礼
- POJ 1062 昂贵的聘礼 [最短路径 SPFA]
- poj 1062 昂贵的聘礼 【最短路径-Dijkstra】
- POJ1062 昂贵的聘礼(最短路径)
- 最短路径--昂贵的聘礼
- 初级->图算法->最短路径 poj 1062 昂贵的聘礼
- poj1062-昂贵的聘礼(最短路径问题)
- POJ1062 昂贵的聘礼 最短路径(Dijkstra)
- POJ_1062_昂贵的聘礼_最短路径
- 图论之最短路径-昂贵的聘礼
- 昂贵的聘礼(迪杰特斯拉最短路径)
- 【最小路径】-POJ 1062-昂贵的聘礼
- poj 1062 昂贵的聘礼(最短路)
- POJ 1062 昂贵的聘礼 最短路
- poj 1062昂贵的聘礼 最短路
- API开发第二篇:PHP的设计模式之工厂模式
- 卷积
- 关于客户端和服务器端编码原理探析
- 战棋类中实现的移动范围
- bzoj1930: [Shoi2003]pacman 吃豆豆 费用流
- [最短路径] POJ 1062 - 昂贵的聘礼
- Linux系统下Stun Server搭建
- 收藏夹
- xcode6.0更新证书错误:No matching provisioning profiles found
- android 开发机型差异性
- d
- Samba服务器的无权限问题
- Android中Socket大文件断点上传
- 如何解决PORTAL与苹果手机接入,苹果手机自动断开WIFI