题目大意:有向图,新计划的地铁,有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. 踩过的坑—iphone手机H5样式兼容总结

    对一个前端开发者来说,最煎熬的莫过于"兼容"两个字了(说到这个词朋友们是不是身体一抖),哪怕对于工作多年的老油条来讲,也不是完全了解各种场景下的兼容性处理方法.在这里我就把我在工作 ...

  2. Win7下mysql的安装

    一.简述 mysql与oracle相比小,便宜,装机量大,下载地址:https://www.mysql.com/downloads/,去找Community Edition,然后根据自己的Window ...

  3. docker基础之镜像

    获取镜像 从 Docker Registry 获取镜像的命令是 docker pull.其命令格式为: docker pull [选项] [Docker Registry地址]<仓库名>: ...

  4. Compiling R-3.4.3 on CentOS 6.10 with GNU

    If you are compiling CentOS 6, you will notice that the R source will not compile without a updated ...

  5. 7、JPA-映射-双向一对多

    一个用户对应多个订单,多个订单对应一个用户,不管查哪一边都可以得到另一边的信息 实体类 Customer package com.jpa.yingshe; import javax.persisten ...

  6. HTML 基础知识汇总(一)

    头部: <head> <!-- 国际通用编码 --> <meta charset="UTF-8"> <!-- 超链接优化写法,让所有的超链 ...

  7. WebRequest/HttpWebRequest/HttpRequest/WebClient/HttpClient的区别

    1.WebRequest和HttpWebRequest WebRequest 的命名空间是: System.Net ,它是HttpWebRequest的抽象父类(还有其他子类如FileWebReque ...

  8. linux chmod命令使用

    chmod:更改文件9个属性 Linux文件属性有两种设置方法,一种是数字,一种是符号. Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/wri ...

  9. PHP6天基础知识部分

    ---恢复内容开始--- (一).基础(PHP超文本预处理器) 1.PHP标记(2种) 1.<?php?>:大众的用法?和php之间不能有空格否则无效. 2.<??>:小众的用 ...

  10. C#实现的系统内存清理

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...