方老师的分身 II

Time Limit: 10000/5000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)

Submit Status

方老师计算出了走路时间最长的那个分身所用的时间。于是有个特殊的分身(据说是方老师真身!)就不想如此古板的走最短路了!由于这个分身的特殊性,这个分身对于单向边可以当双向边走。但是这个特殊的分身想走最短路的同时,要求至少经过k条边。

Input

有多组数据

第一行两个整数n,m(1≤n≤5000,1≤m≤100000)表示有n个教室,m条边。

接下来m行,每行3个数,u,v,t。表示u,v间有一条长度为t的边。

最后一行三个整数s,t,k,表示起点、终点、至少经过k(k≤50)条边。

Output

一个整数,表示最短路径长度。如果无解输出−1。

每组数据占一行。

Sample input and output

Sample Input Sample Output
4 4
1 2 1
2 3 2
1 3 100
3 4 1
1 3 5
7

Source

2014 UESTC Training for Graph Theory
解题报告:
还是跑SPFA,不过加了个经过的边数。。其他的跟SPFA一样的..
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
#define pb push_back
using namespace std;
const int maxn = 5e3 + 50;
int mincost[maxn][50+5];
bool inqueue[maxn][50+5];typedef struct Edge
{int target,cost;Edge(int target ,int cost){this->target = target , this->cost = cost;    }
};typedef struct status
{int pos,step;    status(int pos,int step){this->pos = pos , this->step = step;}
};queue<status>q;
vector<Edge>E[maxn];
int n,m,st,ed,k;void bfs()
{mincost[st][0] = 0;q.push(status(st,0));while(!q.empty()){int pos = q.front().pos , step = q.front().step ; q.pop();int thiscost = mincost[pos][step];inqueue[pos][step] = false;for(int i = 0 ; i < E[pos].size() ; ++ i){int nextnode = E[pos][i].target;int thisstep = min(52,step+1);if (mincost[nextnode][thisstep] == -1 || mincost[nextnode][thisstep] > thiscost + E[pos][i].cost){mincost[nextnode][thisstep] = thiscost + E[pos][i].cost;if (!inqueue[nextnode][thisstep]){q.push(status(nextnode,thisstep));inqueue[nextnode][thisstep] = true;}}}}
}int main(int argc,char *argv[])
{while(~scanf("%d%d",&n,&m)){memset(mincost,-1,sizeof(mincost));memset(inqueue,false,sizeof(inqueue));for(int i = 1 ; i <= m ; ++ i){int u,v,t;scanf("%d%d%d",&u,&v,&t);E[u].pb(Edge(v,t));E[v].pb(Edge(u,t));}scanf("%d%d%d",&st,&ed,&k);bfs();int ans = mincost[ed][k];for(int i = k + 1 ; i <= 52 ; ++ i)if (mincost[ed][i] != -1){if (ans == -1)ans = mincost[ed][i];ans = min (ans , mincost[ed][i]);}printf("%d\n",ans);for(int i = 1 ; i <= n ; ++ i)E[i].clear();}return 0;
}

转载于:https://www.cnblogs.com/Xiper/p/4515727.html

UESTC_方老师的分身 II CDOJ 915相关推荐

  1. UESTC 915 -- 方老师的分身 II (spfa,dijkstra)

    题目大意:求从一个点到另一个点至少经过k条路径的最短路径长度: 思路分析:用两个变量u和e来维护一个点的dis,u表示当前点的编号,e表示经过多少条边,dis[u][e] 表示走到u点经过e条边的最短 ...

  2. UESTC 915 方老师的分身II --最短路变形

    即求从起点到终点至少走K条路的最短路径. 用两个变量来维护一个点的dis,u和e,u为当前点的编号,e为已经走过多少条边,w[u][e]表示到当前点,走过e条边的最短路径长度,因为是至少K条边,所以大 ...

  3. cdoj915-方老师的分身 II (长度不小于k的最短路)【spfa】

    http://acm.uestc.edu.cn/#/problem/show/915 方老师的分身 II Time Limit: 10000/5000MS (Java/Others)     Memo ...

  4. uestc 方老师的分身 III 拓扑排序

    没什么好说的.. 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include< ...

  5. UESTC 914 方老师的分身I Dijkstra

    题意:求有向图的往返最短路的最长长度. 分析:求第一次到所有点的距离可以用一次Dijkstra求最短路求出来.考虑回来的路,想想就知道,从每个点回来的路即为将边的方向反转再求一次最短路后的结果. 所以 ...

  6. cdoj916-方老师的分身 III 【拓扑排序】

    http://acm.uestc.edu.cn/#/problem/show/916 方老师的分身 III Time Limit: 3000/1000MS (Java/Others)     Memo ...

  7. 帮助方老师使用固态硬盘安装win10,赚了150软妹币(但是他赖账了!)

    作为一个计算机专业的,具体点是软件工程,每次别人问自己是干啥的,总会被带入到对方的节奏:哦,能装系统,会修电脑... 今天方老师(一起工作了4年多的曾经是个真正的老湿!搞艺术的!已经提了离职报告了,不 ...

  8. 计算机网络笔记——概述、物理层、链路层(方老师408课程)

    文章目录 前言 互联网概述 互联网发展的三个阶段 互联网标准化机构 互联网的组成 边缘部分的通信方式 核心部分的交换方式 我国计算机网络的发展 计算机网络的类别 计算机网络的性能 速率.带宽.吞吐量 ...

  9. 快速滚动_方老师教滚动快速作文

    五年级第一单元作文集阴沉天空中有一小束照着你的阳光.亲爱的孩子,让时间在知识的枝条上.智慧的绿叶上.成熟的果实上留下它勤奋的印痕!罗婉汀作文集    自律且努力,别让生活太安逸.亲爱的孩子,耕耘者最信 ...

最新文章

  1. JAVA面向对象的特征
  2. 正则截取指定字符串 php,php截取指定字符串除了正则还有什么方法
  3. Python中单下划线开头的特性
  4. Codevs 1010 过河卒 2002年NOIP全国联赛普及组
  5. Python之深入解析Python技能树的测评分析
  6. QQ for Linux下载、安装、运行、卸载
  7. Linux常用文件和目录操作
  8. redis tomcat session
  9. 自监督学习在CV领域研究进展总结
  10. 一次线上Nginx出问题排错经历
  11. 《我也能做CTO之程序员职业规划》之三:曲线定律
  12. JavaSE 学习参考:枚举类型
  13. java实验报告实验环境_Java实验报告一:Java开发环境的熟悉
  14. niceScroll 的使用
  15. HDU 6080 度度熊保护村庄(计算几何+floyd)
  16. 学的计算机专业不会编程,学计算机专业的不会编程啊怎么办?
  17. xsmax无法进入dfu模式_iPhoneXS/XR:强制重启,进入DFU、恢复模式
  18. 爬虫破解js加密破解(二) 有道词典js加密参数 sign破解
  19. 一点点墨水滴在纸上写出来的字体
  20. 汇编Ch.5 Ch.6笔记

热门文章

  1. jQuery语法结构
  2. 史上最简单OpenWRT教程!三分钟三步搞定!碉堡了
  3. 腾讯软件管理电脑版|腾讯软件管理电脑版下载
  4. 什么是Spring三级缓存 对象在三级缓存中的创建流程 【三级缓存 循环依赖】
  5. 怎么修改织梦后台默认的“织梦内容管理系统
  6. 各种文字滚动效果代码
  7. 厉害了,人人都可以制作自己的红包封面!(附:详细制作教程)
  8. 利用border属性画哆啦A梦
  9. 深圳大学2021年春计算机论题期末大作业
  10. 基于MFC的陨石撞飞机游戏设计与实现