UESTC_方老师的分身 II CDOJ 915
方老师的分身 II
Time Limit: 10000/5000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
方老师计算出了走路时间最长的那个分身所用的时间。于是有个特殊的分身(据说是方老师真身!)就不想如此古板的走最短路了!由于这个分身的特殊性,这个分身对于单向边可以当双向边走。但是这个特殊的分身想走最短路的同时,要求至少经过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 |
7 |
Source
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
#define pb push_back
using namespace std;
const int maxn = 5e3 + ;
int mincost[maxn][+];
bool inqueue[maxn][+]; 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][] = ;
q.push(status(st,));
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 = ; i < E[pos].size() ; ++ i)
{
int nextnode = E[pos][i].target;
int thisstep = min(,step+);
if (mincost[nextnode][thisstep] == - || 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,-,sizeof(mincost));
memset(inqueue,false,sizeof(inqueue));
for(int i = ; 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 + ; i <= ; ++ i)
if (mincost[ed][i] != -)
{
if (ans == -)
ans = mincost[ed][i];
ans = min (ans , mincost[ed][i]);
} printf("%d\n",ans);
for(int i = ; i <= n ; ++ i)
E[i].clear();
}
return ;
}
UESTC_方老师的分身 II CDOJ 915的更多相关文章
- UESTC 915 方老师的分身II --最短路变形
即求从起点到终点至少走K条路的最短路径. 用两个变量来维护一个点的dis,u和e,u为当前点的编号,e为已经走过多少条边,w[u][e]表示到当前点,走过e条边的最短路径长度,因为是至少K条边,所以大 ...
- cdoj915-方老师的分身 II (长度不小于k的最短路)【spfa】
http://acm.uestc.edu.cn/#/problem/show/915 方老师的分身 II Time Limit: 10000/5000MS (Java/Others) Memo ...
- UESTC_方老师分身 I CDOJ 914
方老师分身 I Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ...
- UESTC_方老师买表 CDOJ 885
老师买表 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Stat ...
- UESTC_方老师和农场 2015 UESTC Training for Graph Theory<Problem L>
L - 方老师和农场 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submi ...
- UESTC 914 方老师的分身I Dijkstra
题意:求有向图的往返最短路的最长长度. 分析:求第一次到所有点的距离可以用一次Dijkstra求最短路求出来.考虑回来的路,想想就知道,从每个点回来的路即为将边的方向反转再求一次最短路后的结果. 所以 ...
- UESTC 916 方老师的分身III --拓扑排序
做法: 如果有a<b的关系,则连一条a->b的有向边,连好所有边后,找入度为0的点作为起点,将其赋为最小的价值888,然后其所有能到的端点,价值加1,加入队列,删去上一个点,然后循环往复, ...
- UESTC 917 方老师的分身IV --求欧拉路径
判断欧拉路径是否存在及求出字典序最小的欧拉路径问题(如果存在). 将字符串的第一个字母和最后一个字母间连边,将字母看成点,最多可能有26个点(a-z),如果有欧拉路径,还要判断是否有欧拉回路,如果有, ...
- cdoj916-方老师的分身 III 【拓扑排序】
http://acm.uestc.edu.cn/#/problem/show/916 方老师的分身 III Time Limit: 3000/1000MS (Java/Others) Memo ...
随机推荐
- 商派shopex
http://www.shopex.cn/48release/shopexsingle_exper.php 在线体验 前台体验:http://demo.shopex.com.cn/485 后台体验:h ...
- 认识什么是SEO
何为SEO? SEO是由英 文Search Engine Optimization缩写而来, 中文意译为“搜索引擎优化”,是指在了解搜索引擎自然排名机制的基础上,对网站进行内部及外部的调整优化,改进网 ...
- Hdu3072-Intelligence System(强连通求最小值)
After a day, ALPCs finally complete their ultimate intelligence system, the purpose of it is of cour ...
- WPF的数据绑定详细介绍
数据绑定:是应用程序 UI 与业务逻辑之间建立连接的过程. 如果绑定正确设置并且数据提供正确通知,则当数据的值发生更改时,绑定到数据的视觉元素会自动反映更改. 数据绑定可能还意味着如果视觉元素中数据的 ...
- 集合操作出现的ConcurrentModificationException(源码分析)
摘要: 为了保证线程安全,在迭代器迭代的过程中,线程是不能对集合本身进行操作(修改,删除,增加)的,否则会抛出ConcurrentModificationException的异常. 示例: publi ...
- java RMI入门指南
感觉这篇文章不错,直接转了 RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体如今它强大的开发分布式网络应用的能力上,是纯J ...
- NSSCanner 提取 指定 字符串
/** * 从msg中提取指定的内容 * * @param msg 字符串集合 * * @return 从msg中提取指定的内容 */ -(NSString*)extractBodyFromMe ...
- css1-颜色和长度
<!DOCTYPE html>CSS1-颜色和长度 <style>div{ /*颜色*/ color:#f00; /*前景色*/ background:#00f; /*背景色* ...
- Android 加速Gradle构建项目
1. 升级gradle 进入项目文件夹$project/gradle/wrapper/gradle-wrapper.properties, 使用最新的gradle. 修改替换为最新的 distribu ...
- Mob短信验证的配置的解释
原文地址:http://www.jb51.net/article/84946.htm 关于mob短信验证的解释: mob官方是这样写的: repositories{ flatDir{ dirs 'li ...