POJ1062 昂贵的聘礼
来源:互联网 发布:js购物车思路 编辑:程序博客网 时间:2024/05/19 00:50
一.题目链接:http://poj.org/problem?id=1062
二.思路:设起点为0,枚举每个区间,把超出区间的置为已访问,然后Dijkstra求出0到1的最短路,取所有区间中最短的一个。
三.代码:
#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>#include <cstring>#include <queue>using namespace std;const int MAX_SIZE = 102, INF = 1<<30, MOD = 1000000007;int graph[MAX_SIZE][MAX_SIZE];int rankGap, stuffNum;int Rank[MAX_SIZE];void initVisited(int l, int r, bool visited[]){ int i; for(i = 1; i <= stuffNum; i++) if(Rank[i] < l || Rank[i] > r) visited[i] = true;}int Dijkstra(int l, int r){ bool visited[MAX_SIZE]; int dist[MAX_SIZE], i, j, minPath, startPos; memset(dist, 1, sizeof(dist)); memset(visited, 0, sizeof(visited)); initVisited(l, r, visited); visited[0] = true; dist[0] = 0; for(i = 0; i <= stuffNum; i++) dist[i] = graph[0][i]; for(i = 0; i < stuffNum; i++){ minPath = INF; for(j = 0; j <= stuffNum; j++){ if(minPath > dist[j] && !visited[j]){ minPath = dist[j]; startPos = j; } } visited[startPos] = true; for(j = 0; j <= stuffNum; j++){ if(dist[j] > minPath + graph[startPos][j] && !visited[j]) dist[j] = minPath + graph[startPos][j]; } } return dist[1];}void printGraph(){ for(int i = 0; i <= stuffNum; i++){ for(int j = 0; j <= stuffNum; j++){ if(graph[i][j] == 16843009) cout<<"INF "; else cout<<graph[i][j]<<" "; } cout<<endl; }}int main(){ //freopen("in.txt", "r", stdin); int i, j, beginPos, weight, pathNum; memset(graph, 1, sizeof(graph)); cin>>rankGap>>stuffNum; for(i = 1; i <= stuffNum; i++){ cin>>weight>>Rank[i]>>pathNum; graph[0][i] = weight; for(j = 0; j < pathNum; j++){ cin>>beginPos>>weight; graph[beginPos][i] = weight; } } int res = INF; for(i = Rank[1] - rankGap; i <= Rank[1]; i++) res = min(res, Dijkstra(i, i + rankGap)); cout<<res<<endl;}
0 0
- poj1062 昂贵的聘礼
- POJ1062昂贵的聘礼
- poj1062昂贵的聘礼
- POJ1062:昂贵的聘礼
- POJ1062昂贵的聘礼
- poj1062 昂贵的聘礼
- POJ1062 昂贵的聘礼
- poj1062昂贵的聘礼
- poj1062--昂贵的聘礼
- POJ1062昂贵的聘礼
- poj1062- 昂贵的聘礼
- POJ1062 - 昂贵的聘礼
- POJ1062---昂贵的聘礼
- POJ1062 昂贵的聘礼
- POJ1062昂贵的聘礼
- POJ1062 昂贵的聘礼
- poj1062 昂贵的聘礼
- POJ1062-昂贵的聘礼
- ATM机模拟消费
- Java之数据库篇
- [iOS]关于横屏后状态栏不显示的问题
- 用图说明Activity的各个阶段
- Exchange Server 上针对Client端的策略设置
- POJ1062 昂贵的聘礼
- JS学习1(JS实现,JS引入)
- 多态、虚函数、动态绑定的关系
- 实用的图片轮播js代码可直接引用不需要设置css样式
- 2016/4/6微软实习练习题
- rpm package installed problem
- c++ 类模板
- test
- D20