POJ 1062 昂贵的聘礼
2013-07-31 16:08
369 查看
题意: 给一副有向图,求节点1的最小值。限制:选择的节点的等级极差小于m
思路:在包含节点1的范围内枚举等级的范围(长度为m),然后dijkstra即可。
不过m的范围不明确,这个方法给出的真心。。不是很能忍啊,万一给m暴大怎么办?
思路:在包含节点1的范围内枚举等级的范围(长度为m),然后dijkstra即可。
不过m的范围不明确,这个方法给出的真心。。不是很能忍啊,万一给m暴大怎么办?
#include <stdio.h> #include <string.h> #include <algorithm> #include <vector> #include <queue> #include <map> using namespace std; typedef __int64 lld; typedef pair<int , int > P; const int INF = ~0u>>1; const int MOD = 1e9+7; #define CIN(n) scanf("%d", &n) #define clr(a,b) memset(a,b,sizeof(a)) #define REP(i,a,b) for(int i=a; i<(b); i++) #define FOR(i,a,b) for(int i=(a); i<=(b); i++) #define FORP(i,a,b) for(int i=(a); i>=(b); i--) #define PB push_back #define MP make_pair int max(int a, int b) { return a>b?a:b; } int min(int a, int b) { return a<b?a:b; } const int MAXN = 110; int m,n; struct E{ int to, w; E(){} E(int to, int w): to(to), w(w) {} }; vector <E> edge[MAXN]; struct POINT{ int lv,w; }nod[MAXN]; int dist[MAXN]; int ans; int l, r; priority_queue <P, vector<P>, greater<P> > que; class NERO{ public: void in() { scanf("%d%d", &m, &n); FOR(i,1,n) edge[i].clear(); FOR(i,1,n) { int tt; scanf("%d%d%d", &nod[i].w, &nod[i].lv, &tt); while(tt--) { int a,b; scanf("%d%d", &a, &b); edge[a].PB(E(i,b)); } } } void gao(){ ans = INF; for(int i=nod[1].lv-m; i<=nod[1].lv; i++) { l = i; r = i+m; while(!que.empty()) que.pop(); FOR(j,1,n) { dist[j] = nod[j].w; if(l <= nod[j].lv && nod[j].lv <= r) que.push(P(dist[j],j)); dijkstra(); } } printf("%d\n", ans); } void dijkstra() { while(!que.empty()) { P p = que.top(); que.pop(); int v = p.second; if(dist[v] < p.first) continue; REP(i,0,edge[v].size()) { E e = edge[v][i]; if(nod[e.to].lv < l || nod[e.to].lv > r) continue; if(dist[e.to] > dist[v] + e.w) { dist[e.to] = dist[v] + e.w; que.push(P(dist[e.to], e.to)); } } } ans = min(ans , dist[1]); } }Nero; int main(){ Nero.in(); Nero.gao(); return 0; }
相关文章推荐
- POJ 1062 昂贵的聘礼(预处理和dijkstra算法)(M)
- 昂贵的聘礼(poj 1062)
- poj 1062 昂贵的聘礼
- POJ1062 昂贵的聘礼
- POJ 1062 昂贵的聘礼
- POJ 1062 昂贵的聘礼
- poj 1062 昂贵的聘礼 dijkstra
- POJ-1062-昂贵的聘礼
- poj1062 昂贵的聘礼 dij
- POJ 1062 昂贵的聘礼(dijkstra)
- POJ1062 昂贵的聘礼(Dijkstra)
- poj 1062 昂贵的聘礼
- POJ1062 昂贵的聘礼(最短路)
- 昂贵的聘礼 POJ - 1062
- POJ1062昂贵的聘礼
- POJ 1062-昂贵的聘礼(最短路_dijkstra)
- POJ 1062 : 昂贵的聘礼 - 最短路Dijkstra+枚举(难)
- POJ1062 昂贵的聘礼(dijkstra+等级约束时候松弛的判断)
- poj 1062 昂贵的聘礼 解题报告
- [poj1062]昂贵的聘礼_最短路_离散化