P2149 Elaxia的路线

题意简述: 在一个n(n<=1500)个点的无向图里找两对点之间的最短路径的最长重合部分,即在保证最短路的情况下两条路径的最长重合长度(最短路不为一)

  • 思路:
  • 两边dij,第一遍最短路,第二遍在保证最短路的情况下让重合路径长度最长的先出队
  • 代码:
#include <cstdio>
#include <iostream>
#include <queue>
#include <cctype>
#include <cstring>
#include <algorithm>
using namespace std; #define res register int
inline int read()
{
int x=0,f=1; char ch;
while(!isdigit(ch=getchar()))if(ch=='-')f=-1;
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
return f*x;
} const int N=1500+10,M=N*N*2;
int x1,y1,x2,y2,n,m,tot=1; struct node{
int x,y;//xΪ×î¶Ì·³¤¶È£¬yΪ×î³¤ÖØºÏ·¾¶³¤¶È
bool operator >(const node &n2) const{return x==n2.x?y<n2.y:x>n2.x;}
bool operator <(const node &n2) const{return x==n2.x?y>n2.y:x<n2.x;}//СÓÚ ->¸üÓÅ
node(int _x=0,int _y=0) : x(_x),y(_y){}
bool operator ==(const node &n2) const{return x==n2.x&&y==n2.y;}
node operator +(const node &n2) const{return node(x+n2.x,y+n2.y);}
}edge[M],dis[M];
int ver[M],nxt[M],head[N],vis[N]; inline void add(int x,int y,int z)
{
ver[++tot]=y; nxt[tot]=head[x]; head[x]=tot; edge[tot]=node(z,0);
} struct point{
int p; node d;
bool operator <(const point &n2) const{return d>n2.d;}
point(int _p=0,node _d=node(0,0)) : p(_p),d(_d) {}
}; inline void dij(int s)
{
priority_queue <point> q;
for(res i=1 ; i<=n ; ++i) dis[i]=node(0x3f3f3f3f,0),vis[i]=0;
dis[s]=node(0,0); q.push(point(s,dis[s]));
while(q.size())
{
point now=q.top(); q.pop();
int x=now.p;
if(vis[x]) continue; vis[x]=1;
for(res i=head[x] ; i ; i=nxt[i])
{
int y=ver[i];
if(dis[y]>dis[x]+edge[i])
{
dis[y]=dis[x]+edge[i];
q.push(point(y,dis[y]));
}
}
}
} void dfs(int x)
{
for(res i=head[x] ; i ; i=nxt[i])
{
int y=ver[i];
if(dis[y]+edge[i]==dis[x])
{
edge[i].y+=edge[i].x; edge[i^1].y+=edge[i].x;
dfs(y);
}
}
} int main()
{
n=read(); m=read();
x1=read(); y1=read(); x2=read(); y2=read();
for(res i=1 ; i<=m ; ++i)
{
int x=read(),y=read(),z=read(); add(x,y,z); add(y,x,z);
}
dij(x1); dfs(y1); dij(x2);
printf("%d\n",dis[y2].y);
return 0;
}

  

P2149 Elaxia的路线的更多相关文章

  1. 洛谷P2149 Elaxia的路线

    传送门啦 分析: 我最开始想的是跑两遍最短路,然后记录一下最短路走了哪些边(如果有两条最短路就选经过边多的),打上标记.两边之后找两次都标记的边有多少就行了. 但...我并没有实现出来. 最后让我们看 ...

  2. 洛谷 P2149 [SDOI2009]Elaxia的路线 解题报告

    P2149 [SDOI2009]Elaxia的路线 题目描述 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间. Elaxia ...

  3. 洛谷——P2149 [SDOI2009]Elaxia的路线

    P2149 [SDOI2009]Elaxia的路线 题目描述 最近,Elaxia和w的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w每 ...

  4. Luogu P2149 [SDOI2009]Elaxia的路线(最短路+记忆化搜索)

    P2149 [SDOI2009]Elaxia的路线 题意 题目描述 最近,\(Elaxia\)和\(w**\)的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们必须合理地安排两个人在一起的 ...

  5. BZOJ-1880 Elaxia的路线 SPFA+枚举

    1880: [Sdoi2009]Elaxia的路线 Time Limit: 4 Sec Memory Limit: 64 MB Submit: 921 Solved: 354 [Submit][Sta ...

  6. BZOJ 1880: [Sdoi2009]Elaxia的路线( 最短路 + dp )

    找出同时在他们最短路上的边(dijkstra + dfs), 组成新图, 新图DAG的最长路就是答案...因为两人走同一条路但是不同方向也可以, 所以要把一种一个的s,t换一下再更新一次答案 ---- ...

  7. 【BZOJ1880】[Sdoi2009]Elaxia的路线(最短路)

    [BZOJ1880][Sdoi2009]Elaxia的路线(最短路) 题面 BZOJ 洛谷 题解 假装我们知道了任意两点间的最短路,那么我们怎么求解答案呢? 不难发现公共路径一定是一段连续的路径(如果 ...

  8. 【BZOJ 1880】 [Sdoi2009]Elaxia的路线 (最短路树)

    1880: [Sdoi2009]Elaxia的路线 Description 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间. ...

  9. BZOJ1880: [Sdoi2009]Elaxia的路线(最短路)

    1880: [Sdoi2009]Elaxia的路线 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 2049  Solved: 805 题目链接:https ...

随机推荐

  1. 2018.06.28 BZOJ1014 [JSOI2008]火星人prefix(非旋treap+hash)

    [JSOI2008]火星人prefix Time Limit: 10 Sec Memory Limit: 162 MB Submit: 8951 Solved: 2860 Description 火星 ...

  2. 2018.08.30 Tyvj1952 Easy(期望dp)

    Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连 ...

  3. 判断PC机大小端

    判断PC机大小端 #include<stdio.h> #include<stdlib.h> int main() { short a = 0x0102; char *p = ( ...

  4. python私有公有属性

    python中,类内方法外的变量叫属性,类内方法内的变量叫字段.他们的私有公有访问方法类似. class C: __name="私有属性" def func(self): prin ...

  5. CentOS7中实用的命令总结

    一:软件安装配置方面 这里总结一下对个人很实用的功能 1.查询rpm包的依赖哪些文件:rpm -qpR xx.rpm,然后rpm会分析此包的文件依赖性 2.查询系统中安装了哪些rpm包:rpm -qa ...

  6. FIR IP

    (1)多通道系数处理 系数的格式 (1)       每组系数的长度必须一样长: (2)多组系数依次连接即可; 添加多组系数后会,FIR IP核在生成时会多出以下几个信号 .s_axis_config ...

  7. 大文件上传插件webupload插件

    版权所有 2009-2018荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...

  8. spring p 标签

    需要引入命名空间 xmlns:p="http://www.springframework.org/schema/p" p 是什么含义 p 是 property 的缩写,为了简化be ...

  9. accumarray

    Example Create a -by- vector and sum values -D subscripts: val = :; subs = [; ; ; ; ] subs = A = acc ...

  10. Using Integrated SOA Gateway in Oracle EBS(websevice)

    http://blog.csdn.net/pan_tian/article/details/10159935 Oracle EBS如何与第三方系统相集成?比如这样的需求,X系统知道物料编码,需要从EB ...