题目大意:有向图,新计划的地铁,有k个计划新路,利用现有的铁路、k条新路和限定只能用d条新路,找出从0到n-1的最短路径

题目思路:用dist[u][use],储存使用use条新路,到达节点u的最短路径。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#define MAXSIZE 100005
#define INF 0x3f3f3f3f
#define LL long long using namespace std; //题意:有向图,新计划的地铁,有k个计划新路,利用现有的铁路、k条新路和限定只能用d条新路,找出从0到n-1的最短路径 typedef pair<int,int>p; //p.firsr储存节点,p.second储存到达该节点使用的新路的数目 int k,a[MAXSIZE],dist[MAXSIZE][]; struct node
{
int u;
int v;
int w;
int op;
int next;
}G[MAXSIZE]; void Add(int u,int v,int w,int op)
{
G[k].u=u;
G[k].v=v;
G[k].w=w;
G[k].op=op;
G[k].next=a[u];
a[u]=k++;
} void spfa(int n,int d)
{
queue<p> Q;
dist[][]=;
Q.push(p(,));
while(!Q.empty())
{
p k=Q.front();
Q.pop();
int u=k.first;
int use=k.second;
for(int i=a[u];i!=-;i=G[i].next)
{
int v = G[i].v;
int new_use = use + G[i].op;
int new_d = dist[u][use] + G[i].w;
if(dist[v][new_use] > new_d && new_use <= d) //更新使用new_use条新路到达v点的最短路
{
dist[v][new_use] = new_d;
Q.push(p(v,new_use));
}
}
}
} void Init()
{
for(int i=;i<MAXSIZE;i++)
{
a[i]=-;
for(int j=;j<;j++)
dist[i][j]=INF;
}
k=;
} int main()
{
int T,n,m,b,d,cns=;
int u,v,w;
scanf("%d",&T);
while(T--)
{
Init();
scanf("%d%d%d%d",&n,&m,&b,&d);
while(m--)
{
scanf("%d%d%d",&u,&v,&w);
Add(u,v,w,);
//Add(v,u,w,0);
}
while(b--)
{
scanf("%d%d%d",&u,&v,&w);
Add(u,v,w,);
// Add(v,u,w,1);
}
spfa(n,d);
int ans=INF;
for(int i=;i<=d;i++)
ans=min(ans,dist[n-][i]);
if(ans < INF)
printf("Case %d: %d\n",cns++,ans);
else
printf("Case %d: Impossible\n",cns++);
}
return ;
}

Light oj 1281 - New Traffic System 多状态最短路的更多相关文章

  1. 1281 - New Traffic System

    1281 - New Traffic System   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 ...

  2. Light OJ 1037 - Agent 47(预处理状态压缩DP)

    题目大意: 有个特工要执行任务,他会遭遇到最多15个目标,特工必须把他们全部杀死.当他杀死一个目标后他可以使用目标的武器来杀死其他人.因此他必须有一个杀人的顺序,使得他开枪的次数最小. 现在给你一个表 ...

  3. Light OJ 1074:Extended Traffic(spfa判负环)

    Extended Traffic 题目链接:https://vjudge.net/problem/LightOJ-1074 Description: Dhaka city is getting cro ...

  4. Light OJ 1316 A Wedding Party 最短路+状态压缩DP

    题目来源:Light OJ 1316 1316 - A Wedding Party 题意:和HDU 4284 差点儿相同 有一些商店 从起点到终点在走过尽量多商店的情况下求最短路 思路:首先预处理每两 ...

  5. Light OJ 1406 Assassin`s Creed 状态压缩DP+强连通缩点+最小路径覆盖

    题目来源:Light OJ 1406 Assassin`s Creed 题意:有向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路:最少的的人能够走全然图 明显是最小路径覆盖问题 ...

  6. Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖

    标题来源:problem=1406">Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路: ...

  7. Light OJ 1114 Easily Readable 字典树

    题目来源:Light OJ 1114 Easily Readable 题意:求一个句子有多少种组成方案 仅仅要满足每一个单词的首尾字符一样 中间顺序能够变化 思路:每一个单词除了首尾 中间的字符排序 ...

  8. Light OJ 1429 Assassin`s Creed (II) BFS+缩点+最小路径覆盖

    题目来源:Light OJ 1429 Assassin`s Creed (II) 题意:最少几个人走全然图 能够反复走 有向图 思路:假设是DAG图而且每一个点不能反复走 那么就是裸的最小路径覆盖 如 ...

  9. light oj 1007 Mathematically Hard (欧拉函数)

    题目地址:light oj 1007 第一发欧拉函数. 欧拉函数重要性质: 设a为N的质因数.若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N ...

随机推荐

  1. Redis分布式锁----乐观锁的实现,以秒杀系统为例

    本文使用redis来实现乐观锁,并以秒杀系统为实例来讲解整个过程. 乐观锁      大多数是基于数据版本(version)的记录机制实现的.即为数据增加一个版本标识,在基于数据库表的版本解决方案中, ...

  2. 2017-12-15python全栈9期第二天第四节之格式化输出%s和个人简介模板

    #!/user/bin/python# -*- coding:utf-8 -*-msg = '''-----------info of zd----------------Name:zdage:24h ...

  3. Pandas透视表(pivot_table)详解

    介绍 也许大多数人都有在Excel中使用数据透视表的经历,其实Pandas也提供了一个类似的功能,名为pivot_table.虽然pivot_table非常有用,但是我发现为了格式化输出我所需要的内容 ...

  4. Struts2_配置文件

    1.结果跳转方式 <struts> <constant name="struts.devMode" value="true"></ ...

  5. flask models循环使用和migrate迁移脚本

    使用models目的是为了将创建数据库模型的代码与主程序代码分离,migrate的作用就是在数据库字段改变时不用drop表直接做更新操作 新建 models.py  exts.py manage.py ...

  6. centos的用户、组权限、添加删除用户等操作的详细操作命令

    1.Linux操作系统是多用户多任务操作系统,包括用户账户和组账户两种 细分用户账户(普通用户账户,超级用户账户)除了用户账户以为还 有组账户所谓组账户就是用户账户的集合,centos组中有两种类型, ...

  7. 网络编程基础【day09】:通过socket实现简单ssh客户端(三)

    本节内容 1.概述 2.socket发送中文 3.重复发送和多次接收 4.模拟ssh客户端 一.概述 本篇博客讲一下,如果socket客户端断了,另外的客户端怎么接入服务端,还有模拟ssh的链接等. ...

  8. 16、JDBC-DBUtils封装

    使用DBUtils写个通用CURD小工具 依赖配置 pom.xml <?xml version="1.0" encoding="UTF-8"?> & ...

  9. JVM jinfo命令(Java Configuration Info) 用法小结

    简介 jinfo是jdk自带的命令,可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时,修改部分参数. 通常会先使用jps查看java进程的id,然后使用jinfo查看指定pid的jv ...

  10. js替换全部,js检查输入的日期是否是一个正确的日期格式

    <script language="javascript"> var str = "我爱的人和爱我的人,我爱的人和爱我的人"; var newstr ...