【JZOJ6354】最短路(tiring)
description

analysis
- 显然边权有变化规律\(x,{1\over{x-1}},{x-1\over x},x,...\) 
- 于是把一个点拆成三个点,分别表示步数到除\(3\)余\(0,1,2\)的最小值 
- 拆边的话应该也可以,然后跑最短路 
- 我™这辈子都不会再想打SBFA 
code
#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<stdio.h>
#include<string.h>
#include<queue>
#define db double
#define MAXN 600005
#define MAXM MAXN*4
#define INF 19260817e20
#define reg register int
#define fo(i,a,b) for (reg i=a;i<=b;++i)
#define fd(i,a,b) for (reg i=a;i>=b;--i)
#define rep(i,a) for (reg i=last[a];i;i=next[i])
using namespace std;
int last[MAXM],next[MAXM],tov[MAXM];
db len[MAXM],dis[MAXN],ans=INF;
bool bz[MAXN];
int n,m,tot;
inline int read()
{
	int x=0,f=1;char ch=getchar();
	while (ch<'0' || '9'<ch){if (ch=='-')f=-1;ch=getchar();}
	while ('0'<=ch && ch<='9')x=x*10+ch-'0',ch=getchar();
	return x*f;
}
inline db min(db x,db y){return x<y?x:y;}
inline void link(int x,int y,db z){next[++tot]=last[x],last[x]=tot,tov[tot]=y,len[tot]=z;}
struct node
{
	int x;db y;
	bool operator <(const node &a)const{return a.y<y;}
};
priority_queue<node>q;
inline void dijkstra()
{
	while (!q.empty())q.pop();
	memset(dis,100,sizeof(dis));
	memset(bz,0,sizeof(bz));
	q.push((node){3,dis[3]=0});
	while (!q.empty())
	{
		node now=q.top();q.pop();
		if (bz[now.x])continue;bz[now.x]=1;
		rep(i,now.x)if (dis[now.x]+len[i]<dis[tov[i]])
		{dis[tov[i]]=dis[now.x]+len[i];if (!bz[tov[i]])q.push((node){tov[i],dis[tov[i]]});}
	}
	ans=min(dis[3*n],min(dis[3*n+1],dis[3*n+2]));
}
int main()
{
	freopen("T2.in","r",stdin);
	//freopen("tiring.in","r",stdin);
	//freopen("tiring.out","w",stdout);
	n=read(),m=read();
	fo(i,1,m)
	{
		int x=read(),y=read(),z=read();
		link(3*x,3*y+1,1.0*z),link(3*x+1,3*y+2,1.0/(z-1.0)),link(3*x+2,3*y,1.0*(z-1)/z),
		link(3*y,3*x+1,1.0*z),link(3*y+1,3*x+2,1.0/(z-1.0)),link(3*y+2,3*x,1.0*(z-1)/z);
	}
	dijkstra();
	if (ans>1e15)printf("chu ti ren shi zhi zhang\n");
	else printf("%.3lf\n",ans);
	return 0;
}
【JZOJ6354】最短路(tiring)的更多相关文章
- bzoj1001--最大流转最短路
		http://www.lydsy.com/JudgeOnline/problem.php?id=1001 思路:这应该算是经典的最大流求最小割吧.不过题目中n,m<=1000,用最大流会TLE, ... 
- 【USACO 3.2】Sweet Butter(最短路)
		题意 一个联通图里给定若干个点,求他们到某点距离之和的最小值. 题解 枚举到的某点,然后优先队列优化的dijkstra求最短路,把给定的点到其的最短路加起来,更新最小值.复杂度是\(O(NElogE) ... 
- Sicily 1031: Campus (最短路)
		这是一道典型的最短路问题,直接用Dijkstra算法便可求解,主要是需要考虑输入的点是不是在已给出的地图中,具体看代码 #include<bits/stdc++.h> #define MA ... 
- 最短路(Floyd)
		关于最短的先记下了 Floyd算法: 1.比较精简准确的关于Floyd思想的表达:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B.所以,我们假设maz ... 
- bzoj1266最短路+最小割
		本来写了spfa wa了 看到网上有人写Floyd过了 表示不开心 ̄へ ̄ 改成Floyd试试... 还是wa ヾ(。`Д´。)原来是建图错了(样例怎么过的) 结果T了 于是把Floyd改回spfa 还 ... 
- HDU2433 BFS最短路
		Travel Time Limit: 10000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ... 
- 最短路(代码来源于kuangbin和百度)
		最短路 最短路有多种算法,常见的有一下几种:Dijstra.Floyd.Bellman-Ford,其中Dijstra和Bellman-Ford还有优化:Dijstra可以用优先队列(或者堆)优化,Be ... 
- Javascript优化细节:短路表达式
		什么是短路表达式? 短路表达式:作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程 ... 
- Python中三目计算符的正确用法及短路逻辑
		今天在看别人代码时看到这样一种写法, 感觉是个挺容易踩到的坑, 搞清楚后写出来备忘. 短路逻辑 Python中进行逻辑运算的时候, 默认采用的是一种叫做短路逻辑的运算规则. 名字是很形象的, 下面直接 ... 
随机推荐
- 判断页面是否在iframe中,
			//判断页面是否在iframe中,是的话就跳出iframe框,多用于登录页 ,将此段代码放到要做判断的页面上即可 if (window != top) { top.location.href = l ... 
- Redis数据结构之压缩列表-ziplist
			为了节约内存,在zset和hash容器对象元素个数较少时,Redis会采用压缩列表(ziplist)进行存储. 压缩列表是一块连续的内存空间,元素之间紧挨着存储,不存在冗余 一个压缩列表可以包含任意多 ... 
- XML中的值得注意的"坑"
			XML严禁 & < ,建议 < > & ' "进行转义 XML中预定义了5个实体引用: < > & ' " 其中,'<' ... 
- 上线出现[x86_64, i386]
			echo "Target architectures: $ARCHS" APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}&quo ... 
- 笔记53 Mybatis快速入门(四)
			动态SQL 1.if 假设需要对Product执行两条sql语句,一个是查询所有,一个是根据名称模糊查询.那么按照现在的方式,必须提供两条sql语句:listProduct和listProductBy ... 
- springboot java.util.NoSuchElementException: No value present 异常处理
			使用jpa查询的时候,如果查询不到数据,就会返回这个错误,下面是处理方法. @Override public User findByEmail(String email) { User user = ... 
- 5432. 【NOIP2017提高A组集训10.28】三元组
			题目 题目大意 给你\(X+Y+Z\)个三元组\((x_i,y_i,z_i)\). 然后选\(X\)个\(x_i\),选\(Y\)个\(y_i\),选\(Z\)个\(z_i\). 每个三元组只能选择其 ... 
- 【luoguP3701】「伪模板」主席树
			description byx和诗乃酱都非常都非常喜欢种树.有一天,他们得到了两颗奇怪的树种,于是各自取了一颗回家种树,并约定几年后比一比谁种出来的树更加牛x. 很快,这棵树就开花结果了.byx和诗乃 ... 
- jQuery - 动画相关
			// 显示隐藏 $("div").show(); // 显示 $("div").hide(); // 隐藏 // 显示过程3秒, 3秒之内, 元素的宽,高和透明 ... 
- Framework7-Vue搭建项目
			在Framework7的gitHub上有一套与Vue结合的模板,直接下载下来使用即可 https://github.com/framework7io/framework7-template-vue-w ... 
