cogs 826. Feb11] GF打dota

★★☆   输入文件: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道

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>

using namespace std;
const int N=100010;
const int INF=99999999; 

int now1=1,now2=1;
int dis[N],head1[N];
int sta,ed;
bool vis[N];
int ans[N];
int n,m,k,js;
struct fan{
    int u,v,w,nxt;
}F[N];
struct zheng{
    int u,v,w,nxt;
}Z[N];
struct node{
    int point,noww,will;
}now,topp,nxt;

inline int read()
{
    int x=0;int f=1;char c=getchar();
    while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-1;c=getchar();}
    while(c>=‘0‘&&c<=‘9‘)x=x*10+c-‘0‘,c=getchar();
    return x*f;
}

inline void addzheng(int u,int v,int w)
{Z[now1].v=v;Z[now1].w=w;Z[now1].nxt=head1[u];head1[u]=now1++;}

bool operator < (node a,node b)
{return a.will>b.will;}

inline void spfa(int start)
{
    queue<int>q;
    for(int i=1;i<=n;i++)dis[i]=INF,vis[i]=0;
    dis[start]=0;vis[start]=1;
    q.push(start);
    while(!q.empty())
    {
        int ttop=q.front();q.pop();
        vis[ttop]=0;
        for(int i=head1[ttop];~i;i=Z[i].nxt)
            if(dis[Z[i].v]>dis[ttop]+Z[i].w)
                {dis[Z[i].v]=dis[ttop]+Z[i].w;if(!vis[Z[i].v])vis[Z[i].v]=1,q.push(Z[i].v);}
    }
}

inline void Astar(int start,int endd)
{
    if(dis[start]==INF)return ;
    now.point=start,now.noww=0;now.will=dis[start];
    priority_queue<node>q;
    q.push(now);
    while(!q.empty())
    {
        topp=q.top();
        q.pop();
        if(topp.point==endd){ans[++js]=topp.noww;if(js==2)return ;}
        for(int i=head1[topp.point];~i;i=Z[i].nxt)
            {nxt.point=Z[i].v;nxt.noww=topp.noww+Z[i].w;nxt.will=nxt.noww+dis[Z[i].v];q.push(nxt);}
    }
}

int main()
{
    freopen("dota.in","r",stdin);
    freopen("dota.out","w",stdout);
    n=read();m=read();
    for(int i=1;i<=n;i++)head1[i]=-1;
    for(int i=1;i<=m;i++)
        {int u=read(),v=read(),w=read();addzheng(u,v,w);addzheng(v,u,w);}
    sta=1;ed=n;k=read();
    spfa(ed);
    Astar(sta,ed);
    if(!k)printf("%d\n",ans[1]);
    else printf("%d\n",ans[2]);
    return 0;
} 
时间: 2024-08-07 17:19:12

cogs 826. Feb11] GF打dota的相关文章

COGS 827. [Tyvj Feb11] 网站计划

输入文件:web.in   输出文件:web.out   简单对比时间限制:1 s   内存限制:128 MB 描述 Description     Tyvj的Admin--zhq同学将在寒假开始实行Tyvj new web计划,把Tyvj打造成为中国一流的信息学在线评测系统.Tyvj的new web计划里一共有n项,编号1~n,每项的重要度为v[i],Admin—zhq同学共工作m次,第j次从编号为l[j]~r[j]的项目里选择重要度最大的一项任务完成,所获得的进展量为(l[j]+r[j])*

COGS基本法初稿

COGS基本法 序言 我们COGS人民,为建立更完善的联盟,树立正义,保障网络安宁,提供公共OJ,杜绝极少数恐怖分子对我OJ的破坏行为,并使我们自己和OIER得享自由的幸福,特为COGS制定本基本法. 第一条权利机构 权利机构由老常为领导核心的第一代领导集体及COGS QQ群的元老组成,COGS的权力机构为君主立宪制,其中老常为世袭君主,议会由首相刘易铖,长老王梦迪,内阁大臣张灵犀,外交大臣张子昂.国家工程师李冬麟组成.首相.内阁大臣.外交大臣必须由河南省实验中学有着良好素质和学习水平的学生组成

Dota 游戏中的攻击与伤害分析

摘要:在上一篇文章中分析了物理攻击和护甲的攻防分析,但是忽略了英雄对战里面一个很重要的角色--技能攻击.实际上,除了少数后期英雄可以直接靠平砍(即物理攻击)杀人外,大部分英雄尤其是智力英雄还是要靠技能收割人头的.技能的使用也是评价一个玩家水平高低的主要指标.在本文中,我们就技能进行分析. 关键字:技能攻击 魔抗 护甲 伤害类型 攻击类型 Dota中的攻击类型共有普通攻击.穿刺攻击.攻城攻击.混乱攻击.英雄攻击和法术攻击6种.除了法术攻击,其他的统称为物理攻击.然而我们只考虑英雄的话,只有英雄攻击

COGS——T 2739. 凯伦和咖啡

http://www.cogs.pro/cogs/problem/problem.php?pid=2739 ★★☆   输入文件:coffee.in   输出文件:coffee.out   简单对比时间限制:1 s   内存限制:512 MB [题目描述] 为了在上课时保持清醒,凯伦需要一些咖啡.咖啡爱好者凯伦想知道最佳的温度来冲煮完美的咖啡.因此,她花了一些时间阅读几本食谱,其中包括广受好评的“咖啡的艺术”. 她知道有n个食谱,其中第i个食谱建议应当在li和ri度之间冲煮以达到最佳的味道.凯伦

COGS——T 8. 备用交换机

http://www.cogs.pro/cogs/problem/problem.php?pid=8 ★★   输入文件:gd.in   输出文件:gd.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] n个城市之间有通讯网络,每个城市都有通讯交换机,直接或间接与其它城市连接.因电子设备容易损坏,需给通讯点配备备用交换机.但备用交换机数量有限,不能全部配备,只能给部分重要城市配置.于是规定:如果某个城市由于交换机损坏,不仅本城市通讯中断,还造成其它城市通讯中断,则配

COGS——C2098. Asm.Def的病毒

http://www.cogs.pro/cogs/problem/problem.php?pid=2098 ★☆   输入文件:asm_virus.in   输出文件:asm_virus.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] “这就是我们最新研制的,世界上第一种可持久化动态计算机病毒,‘创世纪’.”方教授介绍道. “哦.”主席面无表情地点点头. “‘创世纪’无法真正杀死透明计算网络,但是可以把它变成傻子.可惜透明计算网络能轻松地辨认出病毒,所以我建议……

COGS 497——奶牛派对

http://218.28.19.228/cogs/problem/problem.php?pid=497 我们发现每头牛需要走的路程即为它到x的最短路+x到它的最短路. 转化: 于是这道题变成了一道典型的单源最短路问题,只需求出每个点到x的最短路dl,以及从x到此点的最短路d2,然后去找max(dl+d2)即可. 效率分析: 使用dijsktra算法,时间复杂度为O(n^2). [我的程序] 1 type aa=array[1..1000,1..1000] of longint; 2 var

Calculation of COGM and COGS

Use You can use the Product Cost Planning functions to calculate the cost of goods manufactured (COGM) and cost of goods sold (COGS) for products such as materials and services. The costs may then be analyzed and business decisions (such as "make or

NYOJ 527 AC_mm玩dota

AC_mm玩dota 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 大家都知道AC_mm比较喜欢玩游戏,特别是擅长war3这款经典游戏.某天AC_mm来到了VS平台上 ,准备去虐菜鸟,正巧一个不小心将我们ACM队长虐了 ^_^,我们的队长这下可不高兴了,说要出一道难题让AC_mm难堪一下.题目描述是这样的,给一个正整数n,n在二进制表示的情况下(不含前导0和符号位)有a个1和b个0,求斐波拉契数列的第a*b项对1314520取模后的值ans. 注意(斐波拉契数列: