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

规定第一步为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. C语言的第一次博客作业

    题目1:7-3 温度转换 1.代码 int fahr, celsius; fahr=150; celsius=5*(fahr-32)/9; printf("fahr = %d, celsiu ...

  2. 20162330 实验四 《Android程序设计》 实验报告

    2016-2017-2 实验报告目录: 1 2 3 4 5 20162330 实验四 <Android程序设计> 实验报告 课程名称:<程序设计与数据结构> 学生班级:1623 ...

  3. Beta冲刺 第五天

    Beta冲刺 第五天 1. 昨天的困难 1.昨天的困难主要是在类的整理上,一些逻辑理不清,也有一些类写的太绝对了,扩展性就不那么好了,所以,昨天的困难就是在重构上. 页面结构太凌乱,之前没有统筹好具体 ...

  4. 20162318 实验二《Java面向对象程序设计》实验报告

    北京电子科技学院(BESTI) 实 验 报 告 课程:程序设计与数据结构 班级:1623班 姓名:张泰毓 指导老师:娄老师.王老师 实验日期:2017年4月14日 实验密级:非密级 实验器材:带Lin ...

  5. Flask 扩展 HTTP认证

    Restful API不保存状态,无法依赖Cookie及Session来保存用户信息,自然也无法使用Flask-Login扩展来实现用户认证.所以这里,我们就要介绍另一个扩展,Flask-HTTPAu ...

  6. 自主学习之RxSwift(一) -----Driver

    对于RxSwift,我也是初学者,此系列来记录我学习RxSwift的历程! (一) 想必关于Drive大家一定在RxSwift的Demo中看到过,也一定有些不解,抱着一起学习的态度,来了解一下Driv ...

  7. 十、Python练习----基础搭建飞机大战

    只是简单的学习了pygame,实现飞机的摧毁还需要多张图片的切换,和sprite(碰撞精灵),还有多种音效的添加(如背景音乐.摧毁特效).以后再深入学习我只是练习一下python. 一.搭建界面(基于 ...

  8. MSSQL 2000 错误823恢复

    一.故障描述 MSSQL Server 2000 附加数据库错误823,附加数据库失败.数据库没有备份,不能通过备份恢复数据库,急需恢复数据库中的数据. 二.故障分析SQL Server数据库 823 ...

  9. 完美解决某法院HP EVA8400删除VDISK问题

    [故障描述] 某地法院一台HP EVA8400存储,2组扩展柜,物理磁盘由12个1T FATA磁盘(AG691A 454414-001)和10个300G 15K FC磁盘(AG690A 454411- ...

  10. spring-oauth-server实践:授权方式四:client_credentials 模式下access_token的产生

    授权结果 获取access_token成功, 访问资源服务器API http://localhost:9000/api-gateway-engine/unity/user_info?access_to ...