题目大意:有向图,新计划的地铁,有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. HDU - 5952 Counting Cliques(DFS)

    A clique is a complete graph, in which there is an edge between every pair of the vertices. Given a ...

  2. Python3的第一个程序

    软件:Anaconda Navigator集成开发环境中的Spyder,自带Python,无需单独安装. 注意:Python对缩进和空格敏感,代码必须对齐(包括注释),否则出现错误unexpected ...

  3. javaWeb中使用ajax上传文件

    javaWeb上传图片 上传文件所必要的两个jar包:commons-fileupload.jar.commons-io.jar. jar包下载:github路径 核心代码: String withP ...

  4. Django REST Framework extensions

    GitHub:https://github.com/chibisov/drf-extensions 官方文档:http://chibisov.github.io/drf-extensions/docs ...

  5. oracle中查看所有表和字段以及表注释字段注释

    获取表:select table_name from user_tables; //当前用户拥有的表 select table_name from all_tables; //所有用户的表 selec ...

  6. 信息摘要算法之一:MD5算法解析及实现

    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5实现. ...

  7. Linux学习笔记:【004】Linux内核代码风格

    Chinese translated version of Documentation/CodingStyle   If you have any comment or update to the c ...

  8. jquery load 陷阱【原】

    基础写法 function load(targetId,templateName) { $("#"+targetId).load(contextPath+templateName) ...

  9. 原生JavaScript运动功能系列(五):定时定点运动

    原生JavaScript运动功能系列(一):运动功能剖析与匀速运动实现 原生JavaScript运动功能系列(二):缓冲运动 原生JavaScript运动功能系列(三):多物体多值运动 原生JavaS ...

  10. OpenStack配置串口显示虚机界面

    OpenStack配置串口显示虚机界面 OpenStack的horizon能够显示虚拟机的界面.horizon是web界面,在我们的电脑上,姑且称之为本地,虚拟机运行在远端服务器上,称之为远端.本地显 ...