要求一个最短路,担心的就是一条边被正反经过两次。

规定第一步为1到i,并把这条边设为不可经过。然后从i做最短路到1,因为这个过程是不会经历重边的(如果经历了就不是最短路了)。

求最短路用SPFA,但常数很大,会超时

但YZD大佬轻松优化到0.01s,%%%%YZD大佬orz,方法:

在SPFA时,如果dist+(i->1的路径长)大于ans就没有必要拓展,就不入队

提供YZD大佬博客链接:http://www.cnblogs.com/Lumberjack/

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct Node
{
int next,to,dis;
}edge[];
int head[],num,q[],n,m;
int dist[],map[],ans=2e9;
bool vis[];
void add(int u,int v,int d)
{
num++;
edge[num].next=head[u];
head[u]=num;
edge[num].to=v;
edge[num].dis=d;
}
void SPFA(int x)
{int h,t,i;
memset(dist,-,sizeof(dist));
memset(vis,,sizeof(vis));
q[]=;
h=;t=;
dist[]=;
while (h<t)
{
h++;
int u=q[h];
vis[u]=;
for (i=head[u];i;i=edge[i].next)
{
int v=edge[i].to;
if ((u==&&v==x)||(u==x&&v==)) continue;
if (dist[u]+edge[i].dis+map[x]<=ans)
if (dist[v]>dist[u]+edge[i].dis||dist[v]==-)
{
dist[v]=dist[u]+edge[i].dis;
if (vis[v]==)
{
t++;
q[t]=v;
vis[v]=;
}
}
}
}
}
int main()
{int i,j,u,v,d,c;
//freopen("zaw.in","r",stdin);
//freopen("zaw.out","w",stdout);
cin>>n>>m;
memset(map,/,sizeof(map));
for (i=;i<=m;i++)
{
scanf("%d%d%d%d",&u,&v,&c,&d);
add(u,v,c);
add(v,u,d);
if (v==) map[u]=c;
if (u==) map[v]=d;
}
for (i=;i<=n;i++)
{
SPFA(i);
if (dist[i]==-||map[i]==-) continue;
ans=min(ans,map[i]+dist[i]);
}
cout<<ans<<endl;
}

POI ZAW的更多相关文章

  1. [POI 2004]ZAW

    Description 在 Byte 山的山脚下有一个洞穴入口. 这个洞穴由复杂的洞室经过隧道连接构成. 洞穴的入口是 1 号点.两个洞室要么就通过隧道连接起来,要么就经过若干隧道间接的相连. 现在决 ...

  2. bzoj 2069 [ POI 2004 ] ZAW —— 多起点最短路 + 二进制划分

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2069 首先,对于和 1 相连的点,一定是从某个点出发,回到另一个点: 所以需要枚举起点和终点 ...

  3. 利用poi导出Excel

    import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.r ...

  4. java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...

  5. POI操作Excel

    POI和Excel简介 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作 ...

  6. POI读取EXCEL(2007以上)

    import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; im ...

  7. poi读取excel模板,填充内容并导出,支持导出2007支持公式自动计算

    /** * 版权所有(C) 2016 * @author www.xiongge.club * @date 2016-12-7 上午10:03:29 */ package xlsx; /** * @C ...

  8. POI导出Excel并下载

    首先在pom.xml添加jar包: <!-- 导出excel --> <dependency> <groupId>org.apache.poi</groupI ...

  9. POI对Excel自定义日期格式的读取

    用POI读取Excel数据:(版本号:POI3.7) 1.读取Excel private List<String[]> rosolveFile(InputStream is, String ...

随机推荐

  1. 软工实践项目需求分析(团队)修改版get√-黄紫仪

    日常前言:随笔距离文档大体完成已经过去了2天+(因为中间插了一波结对作业),所以目测感受没有那时候清晰(那时候烦的想打人了都--)需求分析那边去百度找了模板.emmmm好多东西感觉听都没听说过QAQ, ...

  2. Beta冲刺置顶随笔

    项目名称:城市安全风险管控系统 小组成员: 张梨贤.林静.周静平.黄腾飞 Beta冲刺随笔 Beta预备 Beta冲刺Day1 Beta冲刺Day2 Beta冲刺Day3 Beta冲刺Day4 Bet ...

  3. QTableView

    QTableView常用于实现数据的表格显示.下面我们如何按步骤实现学生信息表格: 一 添加表头 //准备数据模型     QStandardItemModel *student_model = ne ...

  4. 201621123068 Week02-Java基本语法与类库

    1. 本周学习总结 1.1 当浮点数和整数放到一起运算时,java一般会将整数转化为浮点数然后进行浮点数计算,但是这样得出的结果通常与数学运算有一定误差,浮点数精确计算需要使用BigDecimal类 ...

  5. Django 基本设置

    建立django目录,为了独立区分app和主站的关系,需要把app完全和主站分离 app/views.py from django.shortcuts import render from djang ...

  6. new malloc和delete free 的区别

    今天看了一个面试题:问new 和 malloc, delete 和 free 的区别,扭捏了半天,也没说完全:现总结如下: 1.先看看new 和 delete 看一个例子: <span styl ...

  7. 根据抽象工厂实现的DBHelpers类

    public abstract class DBHelper { public static SqlConnection conn = new SqlConnection("server=l ...

  8. 作业三:模拟 mysql 进行增删改查

    # !/usr/bin/env python3 # _*_coding:utf-8_*_ def help_sql(cmd): if cmd in func_dic.keys(): print('{} ...

  9. kafka和mqtt的区别是什么?

    两者都是从传统的Pub/Sub消息系统演化出来的,但是进化方向不一样,比较如下: Kafka是为了数据集成的场景,与以往Pub/Sub消息总线不一样,通过分布式架构提供了海量消息处理.高容错的方式存储 ...

  10. SpringCloud的服务消费者 (二):(rest+feign/ribbon)声明式访问注册的微服务

    采用Ribbon或Feign方式访问注册到EurekaServer中的微服务.1.Ribbon实现了客户端负载均衡,Feign底层调用Ribbon2.注册在EurekaServer中的微服务api,不 ...