【bzoj4283】魔法少女伊莉雅

似乎是用最短路树随意判一下就好了。

#include<bits/stdc++.h>
#define maxn 100005
#define maxm 500005
#define INF 0x7f7f7f7f

using namespace std;

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

struct scsc{
    int next,to,from,w;
}edge[maxm<<1],_edge[maxm<<1];

int n,m,Len,head[maxn],d1[maxn],d2[maxn],flag[maxm<<1];

struct node{
    int x,d;
    node(int x,int d):x(x),d(d){};
    node(){};
    bool operator < (const node &a)const{
        if(d==a.d)return x<a.x;
        return d>a.d;
    }
};

void addedge(int u,int v,int w){
    edge[++Len].to=v;edge[Len].from=u;edge[Len].w=w;edge[Len].next=head[u];head[u]=Len;
    edge[++Len].to=u;edge[Len].from=v;edge[Len].w=w;edge[Len].next=head[v];head[v]=Len;
}

void dijkstra(int s,int d[]){
    priority_queue<node>Q;
    for(int i=1;i<=n;++i)d[i]=INF;
    Q.push(node(s,0));d[s]=0;
    while(!Q.empty()){
        int u=Q.top().x;Q.pop();
        for(int i=head[u];i;i=edge[i].next){
            int v=edge[i].to;
            if(d[v]>d[u]+edge[i].w){
                d[v]=d[u]+edge[i].w;
                Q.push(node(v,d[v]));
            }
        }
    }
}

int _Len,_head[maxn],fa[maxn];

void _addedge(int u,int v){
    _edge[++_Len].to=v;_edge[_Len].next=_head[u];_head[u]=_Len;
}

void dfs(int u){
    for(int i=_head[u];i;i=_edge[i].next){
        int v=_edge[i].to;
        if(d1[v]+d2[v]!=d1[n])fa[v]=fa[u];else fa[v]=v;
        dfs(v);
    }
}

int main(){
    n=read();m=read();int f1,f2,f3;
    for(int i=1;i<=m;++i){
        f1=read();f2=read();f3=read();
        addedge(f1,f2,f3);
    }
    dijkstra(1,d1);dijkstra(n,d2);
    for(int u=1;u<=n;++u){
        for(int i=head[u];i;i=edge[i].next){
            int v=edge[i].to;
            if(d2[u]==d2[v]+edge[i].w){
                flag[i]=1;
                _addedge(v,u);
                break;
            }
        }
    }
    fa[n]=n;dfs(n);int ans=INF;
    for(int i=1;i<=Len;++i)if(!flag[i]){
        int u=edge[i].from,v=edge[i].to,w=edge[i].w;
        if(d1[u]<=d1[v]&&fa[u]!=fa[v]&&d1[u]+w+d2[v]!=d1[n])ans=min(ans,d1[u]+w+d2[v]);
    }
    printf("%d\n",ans);
    return 0;
}
时间: 2024-10-12 14:53:25

【bzoj4283】魔法少女伊莉雅的相关文章

【Fate/kaleid liner 魔法少女☆伊莉雅】系列中实践的、新世代的动画摄影工作流

通常的日本动画的摄影中,是以追加Cell(celluloid 赛璐珞)与背景的合成滤镜处理为主,而在[Fate/kaleid liner 魔法少女☆伊莉雅]系列的,加入了自己使用3DCG软件来制作特效素材的新的摄影风格. 作为最后工程的摄影,也可以受益于3DCG软件 已经放映结束的本人气系列的第3季,[魔法少女☆伊莉雅 2wei Herz! ]中, Asahi Production 的中西康祐摄影导演带领的小组,在[Cell与CG的崭新融合]的概念下,实践了最新摄影工作流. [魔法少女☆伊莉雅

bzoj 4283 魔法少女伊莉雅 - 最短路

题目传送门 需要高级权限的快速通道 题目大意 给定一个$n$个点$m$条边的带正权无向图.要求找一条路径满足: 它是一条简单路径 它是一条严格次短路 对于任何一条可能存在于最短路上的边,不能包含它的反向边. 不存在这条路径输出-1. 神题orz...orz....orz....良心的最短路性质题,涵盖了大部分最短路径树和最短路径图上的常用性质. 直觉是最短路上随意判一判就好了.然后全WA了,qwq.. 然后开始讲正题. 将$d\left(u, v \right )$记为点$u$到点$v$的最短路

【BZOJ4399】魔法少女LJJ 线段树合并

[BZOJ4399]魔法少女LJJ Description 在森林中见过会动的树,在沙漠中见过会动的仙人掌过后,魔法少女LJJ已经觉得自己见过世界上的所有稀奇古怪的事情了LJJ感叹道“这里真是个迷人的绿色世界,空气清新.淡雅,到处散发着醉人的奶浆味:小猴在枝头悠来荡去,好不自在:各式各样的鲜花争相开放,各种树枝的枝头挂满沉甸甸的野果:鸟儿的歌声婉转动听,小河里飘着落下的花瓣真是人间仙境”SHY觉得LJJ还是太naive,一天,SHY带着自己心爱的图找到LJJ,对LJJ说:“既然你已经见识过动态树

NBUT 1010 魔法少女(DP)

[1010] 魔法少女 时间限制: 1000 ms 内存限制: 65535 K 问题描述 前些时间虚渊玄的巨献小圆着实火了一把. 在黑长直(小炎)往上爬楼去对抗魔女之夜时,她遇到了一个问题想请你帮忙. 因为魔女之夜是悬浮在半空的,所以她必须要爬楼,而那座废墟一共有n层,而且每层高度不同,这造成小炎爬每层的时间也不同.不过当然,小炎会时间魔法,可以瞬间飞过一层或者两层[即不耗时].但每次瞬移的时候她都必须要至少往上再爬一层(在这个当儿补充魔力)才能再次使用瞬移.爬每单位高度需要消耗小炎1秒时间.

bzoj 4399 魔法少女LJJ

4399: 魔法少女LJJ Time Limit: 20 Sec  Memory Limit: 162 MBhttp://www.lydsy.com/JudgeOnline/problem.php?id=4399 Description 在森林中见过会动的树,在沙漠中见过会动的仙人掌过后,魔法少女LJJ已经觉得自己见过世界上的所有稀奇古怪的事情了LJJ感叹道“这里真是个迷人的绿色世界,空气清新.淡雅,到处散发着醉人的奶浆味:小猴在枝头悠来荡去,好不自在:各式各样的鲜花争相开放,各种树枝的枝头挂满

AC日记——魔法少女LJJ bzoj 4399

魔法少女LJJ 思路: 动态开点权值线段树+启发式合并: 来,上代码: #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define maxn 400005 #define maxm 7000000 int ch[maxm][2],X,dis[maxm],tot,

数据结构作业——魔法少女(平衡二叉树)

魔法少女之相亲大会 Description 由于之前的相亲大会的组织者太过糟糕,实验室的大家仍然没有摆脱 single dog 的命运!!所以请了魔法少女小风,来帮忙实验室脱单!于是光棍节这天,美少女小风重新组织一波相亲大会.她先让男生们按着帅气值高低,从左到右站成一排,接下来 n 秒,每一秒释放一次巴啦啦小风能量!小风能量随机出现"JX"时:粗线了一名男生,然后这个男生会根据自己的帅气值,走到队列里相应的位置. 小风能量随机出现"XQ"时:粗线了一名女生,女生会说

nyoj 魔法少女

魔法少女 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 前些时间虚渊玄的巨献小圆着实火了一把. 在黑长直(小炎)往上爬楼去对抗魔女之夜时,她遇到了一个问题想请你帮忙. 因为魔女之夜是悬浮在半空的,所以她必须要爬楼,而那座废墟一共有n层,而且每层高度不同,这造成小炎爬每层的时间也不同.不过当然,小炎会时间魔法,可以瞬间飞过一层或者两层[即不耗时].但每次瞬移的时候她都必须要至少往上再爬一层(在这个当儿补充魔力)才能再次使用瞬移.爬每单位高度需要消耗小炎1秒时间. 消灭魔

AYUI第12个作品-英雄联盟-魔法少女的星光水晶2.0-WPF版本

一下 内容基于AYUI6.7制作,主要3个大控件,1个 轮播预览,一个抽奖展示,一个是自己的抽中的历史展示,还有礼品领取,图片变成黑白的滤镜,滚动条网页方式布局 历时4天,制作效果如下: 由于自己爬了LOL所有英雄和所有皮肤图片,所有图片包有100M左右,860多张图片,然后自己写了数据包,xml方式本地存储的.暂时抽奖结果不列入xml中. 体验包下载:下载地址 效果图预览: 预览图可能过大5M,加载有点慢 第二张: