poj 3594 Escort of Dr. Who How 最短路spfa
来源:互联网 发布:数据库求质数的代码 编辑:程序博客网 时间:2024/06/05 00:32
题意:
求一个有向图中s到t的最短路,特别的是每条路除了花费时间还有开放时间区间,只有在开放时间区间内才能使用这条路。
分析:
直接用spfa求最短路即可,需要注意的是因为最后所求最短时间是从离开s开始算,所以要枚举离开s的时间。
代码:
//poj 3594//sepNINE#include <iostream>#include <queue>using namespace std;const int maxN=128;const int maxM=1024;int n,e,s,d,m;int head[maxN],arrive[maxN],inq[maxN];queue<int> Q;struct Edge{int v,st,et,t,next;}edge[maxM];void addEdge(int x,int y,int st,int et,int t){edge[e].v=y;edge[e].st=st;edge[e].et=et;edge[e].t=t;edge[e].next=head[x];head[x]=e++; }int spfa(int time){int i,j,k,ans=INT_MAX;for(i=1;i<=n;++i)arrive[i]=INT_MAX;while(!Q.empty()) Q.pop();memset(inq,0,sizeof(inq));arrive[s]=time;Q.push(s);inq[s]=1;while(!Q.empty()){int u=Q.front();Q.pop();inq[u]=0;for(i=head[u];i!=-1;i=edge[i].next){//贪心,每个点都争取最小的到达时间,若对u有两个arrive值arr1,arr2且arr1<arr2,则arr1的更新空间肯定大于包含arr2的更新空间,故在每个点贪心地选择较小的arrive值。 int v=edge[i].v,st=edge[i].st,et=edge[i].et,t=edge[i].t;if(arrive[u]>=st){if(arrive[u]+t<=et&&arrive[u]+t<arrive[v]){arrive[v]=arrive[u]+t;if(inq[v]==0){inq[v]=1;Q.push(v);}}}else{//arrive[u]<st 要等到st才能走 if(st+t<=et&&st+t<arrive[v]){arrive[v]=st+t;if(inq[v]==0){inq[v]=1;Q.push(v);}} }}}if(arrive[d]==INT_MAX) return INT_MAX;elsereturn arrive[d]-time;}int main(){scanf("%d%d%d%d",&n,&m,&s,&d);e=0;memset(head,-1,sizeof(head));int mint=INT_MAX,maxt=-1;while(m--){int x,y,st,et,t;scanf("%d%d%d%d%d",&x,&y,&st,&et,&t);if(t<=et-st){addEdge(x,y,st,et,t);if(x==s){mint=min(mint,st);maxt=max(maxt,st);}}}int ans=INT_MAX;for(int i=mint;i<=maxt;++i){int tmp=spfa(i);if(tmp==INT_MAX)break;ans=min(ans,tmp); }if(ans==INT_MAX)printf("Impossible\n");elseprintf("%d\n",ans);return 0;}
0 0
- poj 3594 Escort of Dr. Who How 最短路spfa
- [POJ 3594] Escort of Dr. Who How [最短路]
- [最短路]POJ 3594 Escort of Dr. Who How#最短路+枚举
- POJ 3594 Escort of Dr. Who How【最短路径Dij + 枚举】
- Escort of Dr. Who How
- POJ 3594 带限制的最短路 枚举+SPFA
- POJ 3259 有负权的最短路 SPFA
- poj 1847 Tram (SPFA最短路)
- poj 1502--MPI Maelstrom (最短路spfa)
- poj 1511 Invitation Cards(spfa最短路)
- poj-2240-Arbitrage-spfa-最短路
- poj 3268 (最短路 spfa)
- poj 2457 Part Acquisition 最短路spfa
- poj 3072 Robot 最短路spfa
- poj 3072 Robot 最短路spfa
- poj 3328 Cliff Climbing 最短路 spfa
- poj 1135 Domino Effect 最短路spfa
- poj 3037 Skiing 最短路spfa
- 使用python实现简单的序列密码
- SpringMVC整合Shiro
- Poj2247 Humble Numbers
- splay tree(伸展树)学习小结(一)
- 赫夫曼树及赫夫曼编码相关内容
- poj 3594 Escort of Dr. Who How 最短路spfa
- Application Fundamentals
- tp搜索页标题关键词高亮显示
- Michael Kors Diaper Bag the hot months clothing accessories in iconic and classy releases so that yo
- Java学习 day02
- 贪心(HDU 1055)
- Michael Kors Tasker to me
- 程序员的十层楼
- Michael Kors Laukut dope need and as well lung cancer: connection between a suit operate education