COGS——T 826. [Tyvj Feb11] GF打dota
http://www.cogs.pro/cogs/problem/problem.php?pid=826
★★☆ 输入文件:dota.in
输出文件:dota.out
简单对比
时间限制:1 s 内存限制:128 MB
众所周知,GF同学喜欢打dota,而且打得非常好。今天GF和Spartan同学进行了一场大战。
现在GF拿到一张地图,地图上一共有n个地点,GF的英雄处于1号点,Spartan的基地位于n号点,
GF要尽快地选择较短的路线让他的英雄去虐掉Spartan的基地。但是Spartan早就料到了这一点,
他有可能会开挂(BS~)使用一种特别的魔法,一旦GF所走的路线的总长度等于最短路的总长度时,
GF的英雄就要和这种魔法纠缠不休。这时GF就不得不选择非最短的路线。现在请你替GF进行规划。
- 对于描述的解释与提醒:
- 1.无向路径,花费时间当然为非负值。
2.对于本题中非最短路线的定义:不管采取任何迂回、改道方式,
只要GF所走的路线总长度不等于1到n最短路的总长度时,就算做一条非最短的路线。
- 3.保证1~n有路可走。
输入:
第一行为n,m(表示一共有m条路径)
接下来m行,每行3个整数a,b,c,表示编号为a,b的点之间连着一条花费时间为c的无向路径。
接下来一行有一个整数p,p=0表示Spartan没有开挂使用这种魔法,p=1则表示使用了。
输出:
- 所花费的最短时间t,数据保证一定可以到达n。
样例输入1:
5 5
1 2 1
1 3 2
3 5 2
2 4 3
4 5 1
0
样例输入2:
5 5
1 2 1
1 3 2
3 5 2
2 4 3
4 5 1
1
- 样例输出1:
- 4
- 样例输出2:
- 5
对于50%的数据,1<=n,m<=5000
对于70%的数据,1<=n<=10000, 1<=m<=50000,p=0,
对于100%的数据,1<=n<=10000, 1<=m<=50000,p=1
无向图,花费时间c>=0
各个测试点1s
- 来源:lydliyudong Tyvj February二月月赛第二场 第2道
最短路+次短路(练A*了、、)
#include <cstdio>
#include <queue> const int INF(0x3f3f3f3f);
const int N();
const int M();
int hed[N],had[N],sumedge;
struct Edge
{
int v,next,w;
}edge1[M<<],edge2[M<<];
inline void ins(int u,int v,int w)
{
edge1[++sumedge].v=v;
edge1[sumedge].next=hed[u];
edge1[sumedge].w=w;
hed[u]=sumedge;
edge2[sumedge].v=u;
edge2[sumedge].next=had[v];
edge2[sumedge].w=w;
had[v]=sumedge; edge1[++sumedge].v=u;
edge1[sumedge].next=hed[v];
edge1[sumedge].w=w;
hed[v]=sumedge;
edge2[sumedge].v=v;
edge2[sumedge].next=had[u];
edge2[sumedge].w=w;
had[u]=sumedge;
} int dis[N];
bool inq[N];
inline void SPFA(register int s)
{
for(int i=;i<s;i++) dis[i]=INF;
dis[s]=; inq[s]=;
std::queue<int>que; que.push(s);
for(int u,v;!que.empty();)
{
u=que.front(); que.pop(); inq[u]=;
for(int i=had[u];i;i=edge2[i].next)
{
v=edge2[i].v;
if(dis[v]>dis[u]+edge2[i].w)
{
dis[v]=dis[u]+edge2[i].w;
if(!inq[v]) que.push(v),inq[v]=;
}
}
}
} struct Node
{
int now,g;
bool operator < (Node a) const
{
return a.g+dis[a.now]<g+dis[now];
}
};
inline int Astar(int s,int t,int k)
{
std::priority_queue<Node>que; Node u,v;
u.now=s; u.g=; que.push(u); int cnt=;
for(;!que.empty();)
{
u=que.top(); que.pop();
if(u.now==t) cnt++;
if(cnt==k) return u.g;
for(int i=hed[u.now];i;i=edge1[i].next)
{
v.now=edge1[i].v;
v.g=u.g+edge1[i].w;
que.push(v);
}
}
} inline void read(int &x)
{
x=; register char ch=getchar();
for(;ch>''||ch<'';) ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-'';
}
inline void write(int x)
{
if(x/) write(x/);
putchar(x%+'');
}
int AC()
{
freopen("dota.in","r",stdin);
freopen("dota.out","w",stdout);
int n,m,p; read(n),read(m);
for(int u,v,w;m--;ins(u,v,w))
read(u),read(v),read(w);
read(p); SPFA(n);
write(Astar(,n,p+));
return ;
} int I_want_AC=AC();
int main(){;}
COGS——T 826. [Tyvj Feb11] GF打dota的更多相关文章
- cogs 826. [Tyvj Feb11] GF打dota
826. [Tyvj Feb11] GF打dota ★★☆ 输入文件:dota.in 输出文件:dota.out 简单对比时间限制:1 s 内存限制:128 MB 众所周知,GF同学喜 ...
- cogs 826. [Tyvj Feb11] GF打dota 次短路详细原创讲解! dijkstra
826. [Tyvj Feb11] GF打dota ★★☆ 输入文件:dota.in 输出文件:dota.out 简单对比时间限制:1 s 内存限制:128 MB 众所周知,GF同学喜 ...
- COGS 1191. [Tyvj Feb11] 猫咪的进化
★ 输入文件:neko.in 输出文件:neko.out 简单对比时间限制:1 s 内存限制:128 MB [背景] 对于一只猫咪来说,它是有九条命的.但是并不是所有的猫咪都是这样,只 ...
- COGS 827. [Tyvj Feb11] 网站计划
输入文件:web.in 输出文件:web.out 简单对比时间限制:1 s 内存限制:128 MB 描述 Description Tyvj的Admin--zhq同学将在寒假开始实行 ...
- COGS——T 1215. [Tyvj Aug11] 冗余电网
http://www.cogs.pro/cogs/problem/problem.php?pid=1215 ★ 输入文件:ugrid.in 输出文件:ugrid.out 简单对比时间限制: ...
- [TYVJ] P1423 GF和猫咪的玩具
GF和猫咪的玩具 描述 Description GF同学和猫咪得到了一个特别的玩具,这个玩具由n个金属环(编号为1---n),和m条绳索组成,每条绳索连接两个不同的金属环,并且长度相同.GF左手拿起金 ...
- tyvj 1423 GF和猫咪的玩具
传送门 解题思路 题目比较水,floyd求出最短路取个最小值即可.结果joyoi时限写错了..好像只有0ms才能过??突然发现加了快读就T不加就A,数据在10000以下的还是scanf快啊. 代码 # ...
- TYVJ P1013 找啊找啊找GF Label:动态规划
做题记录:2016-08-15 22:19:04 背景 MM七夕模拟赛 描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见.""诶,别再见啊.. ...
- COGS 1215. [Tyvj Aug11] 冗余电网
★ 输入文件:ugrid.in 输出文件:ugrid.out 简单对比时间限制:1 s 内存限制:128 MB TYVJ八月月赛提高组第2题 测试点数目:5 测试点分值:20 --内存 ...
随机推荐
- 51nod 1392 装盒子(费用流)
如果权值为\(1\)就是最长反链. 然而并不是.考虑用费用流. 把每一个盒子\(i\)拆成i和\(i+n\). 设源点为\(S\),汇点为\(T\). \(S\)向每一个i连容量为\(1\),费用为\ ...
- Unity图集分割
using System.IO;using UnityEngine;using UnityEditor; public class TestSaveSprite{ [MenuItem("LL ...
- 【codeforces 799D】Field expansion
[题目链接]:http://codeforces.com/contest/799/problem/D [题意] 给你长方形的两条边h,w; 你每次可以从n个数字中选出一个数字x; 然后把h或w乘上x; ...
- 【codeforces 749D】Leaving Auction
[题目链接]:http://codeforces.com/problemset/problem/749/D [题意] 有n个人在竞价; 按照时间的顺序给出n次竞价(可能有一些人没有参加竞价); 每次竞 ...
- 洛谷 P1518 两只塔姆沃斯牛 The Tamworth Two
P1518 两只塔姆沃斯牛 The Tamworth Two 题目背景 题目描述 两只牛逃跑到了森林里.农夫John开始用他的专家技术追捕这两头牛.你的任务是模拟他们的行为(牛和John). 追击在1 ...
- 1067. Sort with Swap(0,*) (25)【贪心】——PAT (Advanced Level) Practise
题目信息 1067. Sort with Swap(0,*) (25) 时间限制150 ms 内存限制65536 kB 代码长度限制16000 B Given any permutation of t ...
- "singleTask"模式 切换到新的栈中
本文截取了网络资源的结论部分 对singletask 启动模式做笔记记录. 尽管SubActivity的launchMode被设置为"singleTask"模式,可是它并不像官方文 ...
- Python入门机器学习
如何通过Python入门机器学习 我们都知道机器学习是一门综合性极强的研究课题,对数学知识要求很高.因此,对于非学术研究专业的程序员,如果希望能入门机器学习,最好的方向还是从实践触发. 我了解到Pyt ...
- validation-api参数校验
这里针对springboot项目结构 maven添加: <dependency> <groupId>javax.validation</groupId> <a ...
- gist.github.com
hosts添加:192.30.253.118 gist.github.com