【poj 1724】ROADS
来源:互联网 发布:windows 3.0 编辑:程序博客网 时间:2024/06/05 05:23
题目大意
每个边有两个权值,length和cost
求cost之和小于给定的C的最短路长度
单向边!
额……没思路
然后去翻题解
真机智!
嗯呢
总之,dij是不需要存dis的
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <queue>using namespace std;const int MAXN = 100000 + 5;int C;struct edge{ int f,t,v,co;}l[MAXN << 1];int first[MAXN],next[MAXN << 1],tot;void init(){ memset(first,0xfff,sizeof(first)); tot = 0; return;}void build(int f,int t,int v,int co){ l[++tot] = (edge){f,t,v,co}; next[tot] = first[f]; first[f] = tot; return;}struct zt{ int u,dis,cost; bool operator < (const zt &b)const { return dis > b.dis; }};//看这里!!!priority_queue <zt> q;int Dijkstra(int s,int e){ while(!q.empty()) q.pop(); q.push((zt){s,0,0}); while(!q.empty()) { zt x = q.top(); q.pop(); int u = x.u; if(u == e) return x.dis; for(int i = first[u];i != -1;i = next[i]) { int v = l[i].t; if(x.cost + l[i].co <= C)//看这里!!! q.push((zt){v,x.dis + l[i].v,x.cost + l[i].co}); } } return -1;}int n,m,s,e;int f,t,v,co;int main(){ init(); scanf("%d\n%d %d",&C,&n,&m); for(int i = 1;i <= m;i ++) { scanf("%d %d %d %d",&f,&t,&v,&co); build(f,t,v,co); } printf("%d\n",Dijkstra(1,n)); return 0;}
0 0
- POJ 1724 ROADS
- POJ 1724 ROADS
- poj 1724 ROADS
- Poj 1724 ROADS
- POJ-1724-ROADS
- poj 1724 ROADS
- POJ 1724 ROADS
- POJ-1724-ROADS
- POJ 1724 ROADS (bfs)
- poj 1724 ROADS
- POJ 1724 ROADS
- POJ 1724 ROADS
- POJ 1724 ROADS
- POJ 1724 ROADS
- POJ 1724--ROADS
- poj 1724 ROADS
- poj 1724 ROADS
- POJ-1724 ROADS
- Android关于Theme.AppCompat相关问题的深入分析
- Hadoop2.x入门讲解
- 八大排序算法自我实现
- JAXP 的 SAX 解析
- 7.14 Git 工具 - 凭证存储
- 【poj 1724】ROADS
- 【机器学习】SVM学习(二):线性分类器
- Asp.Net MVC技术资料全集
- eclipse把java web项目转为maven项目
- JSP学习——JSP基础知识(一)
- event的IE兼容性处理
- PAT 1091. Acute Stroke (30)(孤岛问题)
- CUDA编程 基础学习资料整理
- Ethercalc通过excel文件overwrite