POI ZAW
要求一个最短路,担心的就是一条边被正反经过两次。
规定第一步为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的更多相关文章
- [POI 2004]ZAW
Description 在 Byte 山的山脚下有一个洞穴入口. 这个洞穴由复杂的洞室经过隧道连接构成. 洞穴的入口是 1 号点.两个洞室要么就通过隧道连接起来,要么就经过若干隧道间接的相连. 现在决 ...
- bzoj 2069 [ POI 2004 ] ZAW —— 多起点最短路 + 二进制划分
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2069 首先,对于和 1 相连的点,一定是从某个点出发,回到另一个点: 所以需要枚举起点和终点 ...
- 利用poi导出Excel
import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.r ...
- java的poi技术读取Excel数据到MySQL
这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...
- POI操作Excel
POI和Excel简介 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作 ...
- POI读取EXCEL(2007以上)
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; im ...
- poi读取excel模板,填充内容并导出,支持导出2007支持公式自动计算
/** * 版权所有(C) 2016 * @author www.xiongge.club * @date 2016-12-7 上午10:03:29 */ package xlsx; /** * @C ...
- POI导出Excel并下载
首先在pom.xml添加jar包: <!-- 导出excel --> <dependency> <groupId>org.apache.poi</groupI ...
- POI对Excel自定义日期格式的读取
用POI读取Excel数据:(版本号:POI3.7) 1.读取Excel private List<String[]> rosolveFile(InputStream is, String ...
随机推荐
- 集大1513 & 1514班 软件工程第二次作业评分与点评
谢谢按时完成作业的同学. 请大家在今后的作业中多思考,认真完成并注意作业的原创性. 学号 作业标题 作业地址 提交日期 分数 201521121087 微信APP简要分析 http://www.cnb ...
- C语言助教批改
作业批改 每次作业批改后写一篇作业点评,助教轮流写作业总结.(总结分工老师安排). 每个助教点评自己负责的同学博客,点评要详细,不能只有一句话. 有比较优秀博客请或典型问题推荐到qq群,并发给写总结助 ...
- 团队作业7——第二次项目冲刺(Beta版本12.10)
项目每个成员的进展.存在问题.接下来两天的安排. 已完成的内容:头像功能原型设计.头像裁剪功能.头像上传功能.测试 计划完成的内容:头像功能测试.bug修复 每个人的工作 (有work item 的I ...
- JAVA使用和操作properties文件
java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properti ...
- bzoj千题计划128:bzoj4552: [Tjoi2016&Heoi2016]排序
http://www.lydsy.com/JudgeOnline/problem.php?id=4552 二分答案 把>=mid 的数看做1,<mid 的数看做0 这样升序.降序排列相当于 ...
- SDOI2017 相关分析
把两个式子拆开 Σ(xi-px)(yi-py) =Σ xiyi + py * Σ xi - px * Σ yi + Σ 1* px * py Σ (xi-px)² = Σ xi² + px * Σ ...
- SQL查询语句练习
最近在学习SQL嘛,所以各个地方找题目来练手,毕竟现在能离得开数据库么? Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C ...
- less规范
Less 编码规范 (1.1) 简介 该文档主要的设计目标是提高 Less 文档的团队一致性与可维护性. Less 代码的基本规范和原则与 CSS 编码规范 保持一致. 编撰 吕俊涛 本文档由商业运营 ...
- 面向对象的PHP(5)
OOP的好处 封装 封装可以隐藏实现细节,使代码模块化,代码重用 继承 继承可以扩展已存在的代码模块(class),代码重用 多态 为了类在继承和派生的时候,保证实例的某一属性正确调用,接口重用 关键 ...
- SQL语句 (一)
1 SQL语句分类: 数据查询语句(DQL): SELECT 数据操纵语言 (DML): INSERT.UPDATE.DELETE 数据定义语言 (DDL): 数据控制语言 (DCL): GRANT. ...