Vijos 1082 最短路
来源:互联网 发布:松下fp xh编程手册 编辑:程序博客网 时间:2024/05/06 06:25
点击打开链接
题意:中文
思路:直接跑两遍最短路,然后将所有可以用的边全部找出来,然后在跑一遍最短路求出最短时间即可
#include <queue>#include <vector>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <algorithm>#include <functional>using namespace std;typedef long long ll;const int inf=0x3f3f3f3f;const int maxn=5010;const int maxm=40010;struct edge{ int to,cost_ti,cost_len; edge(int a,int b,int c){to=a;cost_ti=b;cost_len=c;}};typedef pair<int,int>P;vector<edge>G[maxn];int dis1[maxn],dis2[maxn];void dijkstra(int s,int *dis){ priority_queue<P,vector<P>,greater<P> >que; fill(dis,dis+maxn,inf); dis[s]=0;que.push(P(0,s)); while(!que.empty()){ P p=que.top();que.pop(); int v=p.second; if(dis[v]<p.first) continue; for(unsigned int i=0;i<G[v].size();i++){ edge e=G[v][i]; if(dis[e.to]>dis[v]+e.cost_ti){ dis[e.to]=dis[v]+e.cost_ti; que.push(P(dis[e.to],e.to)); } } }}struct edge1{ int to,cost_len; edge1(int a,int c){to=a;cost_len=c;}};typedef pair<int,int>P;vector<edge1>GG[maxn];int dis[maxn];void dijkstra1(int s){ priority_queue<P,vector<P>,greater<P> >que; fill(dis,dis+maxn,inf); dis[s]=0;que.push(P(0,s)); while(!que.empty()){ P p=que.top();que.pop(); int v=p.second; if(dis[v]<p.first) continue; for(unsigned int i=0;i<GG[v].size();i++){ edge1 e=GG[v][i]; if(dis[e.to]>dis[v]+e.cost_len){ dis[e.to]=dis[v]+e.cost_len; que.push(P(dis[e.to],e.to)); } } }}int U[maxm],V[maxm],C[maxm],D[maxm];int main(){ int n,m,st,en,k; while(scanf("%d%d",&n,&m)!=-1){ for(int i=0;i<maxn;i++) G[i].clear(),GG[i].clear(); for(int i=0;i<m;i++){ scanf("%d%d%d%d",&U[i],&V[i],&C[i],&D[i]); G[U[i]].push_back(edge(V[i],C[i],D[i])); G[V[i]].push_back(edge(U[i],C[i],D[i])); } scanf("%d%d",&st,&en); scanf("%d",&k); dijkstra(st,dis1);dijkstra(en,dis2); for(int i=0;i<m;i++){ if(dis1[U[i]]+C[i]+dis2[V[i]]<=k||dis1[V[i]]+C[i]+dis2[U[i]]<=k){ GG[U[i]].push_back(edge1(V[i],D[i])); GG[V[i]].push_back(edge1(U[i],D[i])); } } dijkstra1(st); if(dis[en]==inf) printf("-1\n"); else printf("%d\n",dis[en]); } return 0;}
0 0
- Vijos 1082 最短路
- 【最短路】Vijos P1046 观光旅游
- vijos p1285(最短路变形+计数)
- 【vijos】【最短路变式】遭遇战
- |Vijos|图论最短路|P1446 最短路上的统计
- VIJOS-P1406 古韵之鹊桥相会 最短路 模型
- 【最短路】Vijos P1022 Victoria的舞会2
- 【vijos】【最短路变式】小D的旅行
- 【vijos】【spfa最短路】想越狱的小杉
- [Vijos 2024]无向图最短路径 (最短路)
- ZOJ 1082 最短路
- [Hash] [最短路] [Vijos P1184] CoVH之华丽的IP伪装 (ConanIP)
- VIJOS-P1006 晴天小猪历险记之Hill spfa 最短路模型
- vijos[P1054] luogu[P2662] 牛场围栏 (数论+最短路,(DP可水过))
- 【codevs 1041】【vijos P1119】[NOIP提高组2001] Car的旅行路线(最短路)
- Vijos 1069 新年趣事之红包(动态规划最短路)
- |Vijos|图论最短路|P1046 观光旅游
- 【vijos】【建反图最短路】最优贸易
- filter与servlet的比较
- Android 更新UI 只能在主线程?
- 2-2 Time类的定义
- C#中的接口和类有什么异同。
- 反射
- Vijos 1082 最短路
- LeetCode 24:Swap Nodes in Pairs
- andorid添加桌面快捷方式
- MySql update inner join!MySql跨表更新 多表update sql语句?如何将select出来的部分数据update到另一个表里面?
- hdu 5876 暴力
- :jsonp的原理
- poj--3258 River Hopscotch(最大化最小值)
- int; int*; int&区别
- Jvm工作原理学习笔记