codevs 1992 聚会 最短路+SPFA优化+反向建边
来源:互联网 发布:ppt柱状图显示数据 编辑:程序博客网 时间:2024/04/29 11:26
小S 想要从某地出发去同学k的家中参加一个party,但要有去有回。他想让所用的
时间尽量的短。但他又想知道从不同的点出发,来回的最短时间中最长的时间是多
少,这个任务就交给了你
输入描述 Input Description
第一行三个正整数n, m, k(n是节点个数,m是有向边的条数,k是参加聚会的地点
编号)( 1 ≤ n ≤ 1000 ,1 ≤ m ≤ 100,000)
第二行..m + 1行每行3个整数x,y,w 代表从x到y需要花w的时间 0 < w <= 100
这个题数据水到不行,n==1000
反向建边 加SPFA优化
复杂度n log n
#include<iostream>#include<cstdio>#include<queue>#include<cstring>using namespace std;deque<int> q;struct jiantu{ int x,y,w;}jt[100010];struct bian{ int f,t,d;}b[100010];int tot=1;int first[1005],nxt[100010];int dis1[1005],dis2[1005];int inf=21474836;bool use[1005];void build(int f,int t,int d){ b[++tot].f=f; b[tot].t=t; b[tot].d=d; nxt[tot]=first[f]; first[f]=tot;}void spfa(int k){ q.push_front(k); use[k]=1; dis1[k]=0; int dq,v; while(!q.empty()) { dq=q.front(); q.pop_front(); use[dq]=0; for(int i=first[dq];i;i=nxt[i]) { v=b[i].t; if(dis1[v]>dis1[dq]+b[i].d) { dis1[v]=dis1[dq]+b[i].d; if(!use[v]) { if(!q.empty()&&dis1[v]<dis1[q.front()]) q.push_front(v); else q.push_back(v); use[v]=1; } } } }}int main(){ int n,m,k; scanf("%d%d%d",&n,&m,&k); for(int i=1;i<=m;i++) { scanf("%d%d%d",&jt[i].x,&jt[i].y,&jt[i].w); build(jt[i].x,jt[i].y,jt[i].w); } for(int i=1;i<=n;i++) dis1[i]=inf; spfa(k); for(int i=1;i<=n;i++) { dis2[i]=dis1[i]; dis1[i]=inf; } memset(b,0,sizeof(b)); memset(nxt,0,sizeof(nxt)); memset(first,0,sizeof(first)); for(int i=1;i<=m;i++) build(jt[i].y,jt[i].x,jt[i].w); spfa(k); int ans=0; for(int i=1;i<=n;i++) { if(dis1[i]!=inf&&dis2[i]!=inf) ans=max(ans,dis1[i]+dis2[i]); } printf("%d",ans); return 0;}
3 0
- codevs 1992 聚会 最短路+SPFA优化+反向建边
- Codevs 1079 回家 最短路 spfa || dijkstra
- codevs 1557 热浪 SPFA 最短路
- poj1511 spfa最短路+手写邻接表+反向建图
- 【CodeVS】1269 匈牙利游戏 最短路 次短路 SPFA
- spfa 快速最短路-队列优化
- 【最短路】聚会 party
- HDU 2680 Choose the best route 【最短路 反向建图 dijkstra & SPFA 】
- hdu 1535 Invitation Cards spfa求最短路,反向建图再来一次
- 【最短路】hdu2544 SPFA以及SPFA的优化
- codevs 1992 聚会
- HDU 1535 Invitation Cards 有向图的来回最短路(邻接表反向建图)+spfa
- SPFA最短路
- 最短路之SPFA
- poj2472最短路spfa
- 最短路SPFA--poj3013
- 最短路 SPFA模板
- 最短路 SPFA
- QT学习笔记(2)—信号与槽
- Android中设计模式--状态模式(将动作委托到当前状态,状态之间可以互相转换)
- Problem a
- CODE[VS] 1031素数环
- Angular中实现树形结构视图
- codevs 1992 聚会 最短路+SPFA优化+反向建边
- iOS-UITableView的增加、移除
- 201603232007
- java中代码执行顺序(静态代码块、构造函数)
- Cordys BOP 4.3流程实例监控及流程恢复、流程环节配置Method问题的分析处理
- RCC
- java十九节-RandomAccessFile
- hdoj 1867 A + B for you again【kmp,前缀与后缀的匹配】
- 第4周项目5-(1)