题目

分析

拆点连边+spfa。

首先把图分成2lim+1层,也就是每个点拆成2lim+1个点。

如果a和b之间、b和c有一条有向边,那么连边(k,a)-->(k+1,b),(k+1,b)-->(k+2,c)(k=1、3、5、···、2lim+1,是当前点所在的层数),这两条边的权值和是l。也就是说当走了(k,a)-->(k+1,b)-->(k+2,c)这条路线时,就是抄了一次近道。

注意:在spfa中,当走到的点在第2、4、6、···、2lim层时,就只能往上走,因为当前点一定在抄近道的过程中。

#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const int maxlongint=2147483647;
using namespace std;
int next[800000],last[800000],to[800000],dis[13][200000],n,m,lim,l,tot,v[800000],ans,d[10000000][2];
bool bz[200000];
int bj(int x,int y,int z)
{
next[++tot]=last[x];
last[x]=tot;
to[tot]=y;
v[tot]=z;
}
int spfa()
{
int i,j,head=0,tail=1,k;
d[1][0]=0;
d[1][1]=1;
dis[0][1]=0;
while(head<tail)
{
k=++head;
bz[d[k][0]*n+d[k][1]]=true;
for(i=last[d[k][1]+n*d[k][0]];i;i=next[i])
{
j=to[i];
int x=(j-1)/n;
if(dis[x][(j-1)%n+1]>dis[d[k][0]][d[k][1]]+v[i])
{
dis[x][(j-1)%n+1]=dis[d[k][0]][d[k][1]]+v[i];
if(bz[j])
{
bz[j]=false;
d[++tail][0]=x;
d[tail][1]=(j-1)%n+1;
}
}
}
}
}
int main()
{
freopen("sigemago.in","r",stdin);
freopen("sigemago.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&l,&lim);
for(int i=1;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
for(int j=1;j<=lim+1;j++)
{
bj(x+n*(j*2-2),y+n*(j*2-2),z);
}
for(int j=1;j<=lim*2;j++)
{
bj(x+n*(j-1),y+n*j,l*(j%2));
}
}
memset(dis,60,sizeof(dis));
memset(bz,true,sizeof(bz));
spfa();
ans=maxlongint;
for(int i=1;i<=lim+1;i++)
{
if(ans>dis[i*2-2][n]) ans=dis[i*2-2][n];
}
if(ans>=dis[0][0]) printf("-1\n");
else
printf("%d\n",ans);
}

【GDOI 2016 Day2】第一题 SigemaGO的更多相关文章

  1. NOIP2011 day2 第一题 计算系数

    计算系数 NOIP2011 day2 第一题 描述 给定一个多项式(ax+by)^k,请求出多项式展开后x^n*y^m项的系数. 输入格式 共一行,包含5 个整数,分别为 a ,b ,k ,n ,m, ...

  2. 2016/1/12 第一题 输出 i 出现次数 第二题 用for循环和if条件句去除字符串中空格 第三题不用endwith 实现尾端字符查询

    import java.util.Scanner; public class Number { private static Object i; /* *第一题 mingrikejijavabu中字符 ...

  3. GDOI 2016 & APIO 2016 游记

    缓慢施工中...... UPD:APIO游记已烂尾......因为Cu滚粗+生病一直没心情写..过了几天就发现APIO的事都快忘光了...去看KPM的就可以啦 今年apio竟然没和gdoi撞...智障 ...

  4. [算法 笔记]2014年去哪儿网 开发笔试(续)第一题BUG修正

    上一篇的blog地址为:http://www.cnblogs.com/life91/p/3313868.html 这几天又参加了一个家公司的笔试题,在最后的编程题中竟然出现了去哪儿网开发的第一题,也就 ...

  5. 《学习OpenCV》练习题第五章第一题ab

    这道题是载入一幅带有有趣纹理的图像并用不同的模板(窗口,核)大小做高斯模糊(高斯平滑),然后比较用5*5大小的窗口平滑图像两次和用11*11大小的窗口平滑图像一次是否接近相同. 先说下我的做法,a部分 ...

  6. 《学习OpenCV》练习题第四章第一题b&c

    #include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...

  7. 《学习OpenCV》练习题第四章第一题a

    #include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...

  8. Google Code Jam 第一题

    通过的第一题,留做纪念,呵呵,非常简单,Africa 2010, Qualification Round: Store Credit. #include <stdio.h> #includ ...

  9. 图论测试题(一)第一题:longest

    第一题:longest 乌托邦有n个城市,某些城市之间有公路连接.任意两个城市都可以通过公路直接或者间接到达,并且任意两个城市之间有且仅有一条路径(What does this imply? A tr ...

随机推荐

  1. Python 笔试集(3):编译/解释?动态/静态?强/弱?Python 是一门怎样的语言

    面试题 解释/编译?动态/静态?强/弱?Python 到底是一门怎样的语言? 编译 or 解释? 编译.解释都是指将(与人类亲和的)编程语言翻译成(计算机能够理解的)机器语言(Machine code ...

  2. 测开之路一百四十七:用WTForms实现编辑功能

    接上一篇的内容 把原先的数据库模型全部给默认值,后面form赋值的时候就不用传位置参数了 把视图逻辑修改一下 # 视图层from datetime import datetimefrom flask. ...

  3. 2018.03.29 python-pandas 数据透视pivot table / 交叉表crosstab

    #透视表 pivot table #pd.pivot_table(data,values=None,index=None,columns=None, import numpy as np import ...

  4. apue 在 mac 环境编译错误

    参考资料:https://unix.stackexchange.com/questions/105483/compiling-code-from-apue 笔者使用 mac 学习 apue, 在编译的 ...

  5. RabbitMQ使用(下)

    RabbitMQ从信息接收者角度可以看做三种模式,一对一,一对多(此一对多并不是发布订阅,而是每条信息只有一个接收者)和发布订阅.其中一对一是简单队列模式,一对多是Worker模式,而发布订阅包括发布 ...

  6. storm集群环境搭建

    1.环境 Java环境 卸载虚机环境中自带的openJdk,安装sun的jdk,配置环境变量 2.安装storm 下载storm安装包 解压到安装目录,配置环境变量 vi /etc/profile # ...

  7. 红帽学习笔记[RHCSA] 第五课[用户、权限相关]

    第五课 用户权限 查看文件的权限 [kane@localhost /]$ ll total 36 ----------. 1 root root 1751 Aug 22 20:58 ~ lrwxrwx ...

  8. RabbitMQ 安装步骤

    RabbitMQ安装步骤 一.安装erlang 1.下载erlang wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1 ...

  9. JAVA基础--JAVA 集合框架(泛型、file类)

    一.集合总结 集合:Collection体系.Map体系. Collection体系:单列集合的共性操作规则. List:列表,可以重复,有下标,拥有特有的迭代器ListIterator. Array ...

  10. Hyper-V Centos7 虚拟机固定IP

    在网上看到很多篇文章,自己也去试验过,结果实现的效果都不是很理想,并不是自己所需要的,下面是我自己研究,最后成功的经验,希望能够帮到大家.少走一些弯路. 需求 1.无论物理机的网络环境怎么变化,都需要 ...