POJ-1724-ROADS

来源:互联网 发布:广告播放软件 编辑:程序博客网 时间:2024/06/11 03:50

从 1 到 n 花费不超过 k 的最短路

#include<stdio.h>#include<algorithm>#include<iostream>#include<string.h>#include<stdlib.h>#include<queue>#include<vector>#include<math.h>#include<stack>using namespace std;const int MAX = 100+10;const double eps = 1e-10;const double PI = acos(-1.0);struct node{int v, l, w;};int k, n, r;vector<node>graph[MAX];void add(int u, int v, int l, int w){node ver;ver.v = v;ver.l = l;ver.w = w;graph[u].push_back(ver);}bool operator < (node a, node b){if(a.l!=b.l)return a.l>b.l;return a.w>b.w;}int solve(){priority_queue<node>que;node now;now.l = 0;now.w = 0;now.v = 1;que.push(now);while(!que.empty()){now = que.top();que.pop();int u = now.v;if(u==n)break;for(int i = 0; i<(int)graph[u].size(); ++i){node p = graph[u][i];p.l+=now.l;p.w+=now.w;if(p.w<=k)que.push(p);}}if(now.v==n)return now.l;return -1;}int main(){int s, d, l, t;cin>>k>>n>>r;while(r--){cin>>s>>d>>l>>t;add(s, d, l, t);}cout<<solve()<<endl;    return 0;}


0 0