题意:求最短路最长公共距离。

考虑每一条边,如果满足dis(s1,u)+len+dis(v,t1)==dis(s1,t1) && dis(s2,u)+len+dis(v,t2)==dis(s2,t2) 则该边在公共最短路上

拓扑排序dp下即可

 #include<bits/stdc++.h>
using namespace std;
#define N 1505
#define INF 1e9
int n,m,a[],dis[][N],cnt,cnt1,head[N],head1[N],r[N],ans[N],fin;
bool y[N];
struct data{
int num,v;
bool operator < (const data& w)const{
return v>w.v;
}
};
priority_queue<data>q;
inline int read(){
int x=,f=; char a=getchar();
while(a<'' || a>'') {if(a=='-') f=-; a=getchar();}
while(a>='' && a<='') x=x*+a-'',a=getchar();
return x*f;
}
struct edges{
int fr,to,v,next;
}e[],e1[];
void inser(int u,int v,int c){
e[cnt]=(edges){u,v,c,head[u]};head[u]=cnt++;
e[cnt]=(edges){v,u,c,head[v]};head[v]=cnt++;
}
void ins(int u,int v,int c){
if(dis[][u]>dis[][v]) swap(u,v);
e1[cnt1]=(edges){u,v,c,head1[u]};head1[u]=cnt1++; r[v]++;
}
void dj(int x){
dis[x][a[x]]=; memset(y,,sizeof(y));q.push((data){a[x],});
int s,to;
while(!q.empty()){
s=q.top().num; q.pop();
if(y[s]) continue; y[s]=;
for(int i=head[s];i>=;i=e[i].next){
if(y[e[i].to]) continue; to=e[i].to;
if(dis[x][to]>dis[x][s]+e[i].v) dis[x][to]=dis[x][s]+e[i].v,q.push((data){to,dis[x][to]});
}
}
}
void topsort(int x){
r[x]--;
for(int i=head1[x];i>=;i=e1[i].next){
ans[e1[i].to]=max(ans[e1[i].to],ans[x]+e1[i].v);
fin=max(ans[e1[i].to],fin);
r[e1[i].to]--; if(!r[e1[i].to]) topsort(e1[i].to);
}
}
int main(){
n=read(); m=read();
memset(dis,,sizeof(dis));
memset(head,-,sizeof(head));
memset(head1,-,sizeof(head1));
for(int i=;i<=;i++) a[i]=read();
for(int u,v,c,i=;i<=m;i++)
u=read(),v=read(),c=read(),inser(u,v,c);
for(int i=;i<=;i++) dj(i);
for(int i=;i<cnt;i+=){
int u=e[i].fr,v=e[i].to;
if((dis[][u]+e[i].v+dis[][v]==dis[][a[]] || dis[][v]+e[i].v+dis[][u]==dis[][a[]]) && (dis[][u]+e[i].v+dis[][v]==dis[][a[]] || dis[][v]+e[i].v+dis[][u]==dis[][a[]]))
ins(u,v,e[i].v);
}
for(int i=;i<=n;i++)
if(!r[i]) topsort(i);
printf("%d\n",fin);
return ;
}

BZOJ1880: [Sdoi2009]Elaxia的路线的更多相关文章

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

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

  2. bzoj1880: [Sdoi2009]Elaxia的路线(spfa,拓扑排序最长路)

    1880: [Sdoi2009]Elaxia的路线 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 1944  Solved: 759[Submit][St ...

  3. [BZOJ1880] [Sdoi2009] Elaxia的路线 (SPFA & 拓扑排序)

    Description 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w**每天都要奔波于宿舍和实验室之间, ...

  4. [luogu2149][bzoj1880][SDOI2009]Elaxia的路线【拓扑排序+最短路+DP】

    题目描述 最近,Elaxia和w的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间. Elaxia和w每天都要奔波于宿舍和实验室之间,他们 希望在节约时间 ...

  5. BZOJ1880:[SDOI2009]Elaxia的路线(最短路,拓扑排序)

    Description 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w**每天都要奔波于宿舍和实验室之间, ...

  6. BZOJ1880 [Sdoi2009]Elaxia的路线 【最短路 + dp】

    题目 最近,Elaxia和w的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w每天都要奔波于宿舍和实验室之间,他们 希望在节约时间的前提 ...

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

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

  8. 【BZOJ1880】[Sdoi2009]Elaxia的路线 最短路+DP

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

  9. 【BZOJ1880】[SDOI2009]Elaxia的路线 (最短路+拓扑排序)

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

随机推荐

  1. IOS基础面试题

    最近离职了,找工作,光会做项目,对基础不熟,今天就总结了一点面试题. 废话不多说,上题吧: 1.objective-c中的数字对象都有哪些,简述它们与基本数据类型的区别是什么. 基本类型和C一样,主要 ...

  2. 12. 星际争霸之php设计模式--模板模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  3. 十五、Java基础---------集合框架体系以及List

    在介绍集合之前先说一下数组,正如我们所知,数组是某一类型数据的集合,强调的是数据,而且必须单一:集合框架的不同之处在于存储的数据类型没有任何限制,既可以存储基本数据类型(会自动提升为相应的包装类)也可 ...

  4. Xamarin

    快速建立原生(Native)的行动装置应用程序: 程序代码共享: 与 Visual Studio 整合: 确保第一时间更新: 原生的应用程序效能:

  5. Dynamics AX 2012 R3 Demo 安装与配置 - 配置安装环境 (Step 1)

    AX 2012 R3 发布后,Reinhard一直想体验一把,可是Reinhard所在的公司暂时不会升级到R3版本.这不,Reinhard就打算在个人电脑上安装下,可是安装的过程中,遇到了很多问题,R ...

  6. RAM与ROM

    随着对计算机行业的深入了解,很多人开始听到一些RAM和ROM的讨论话题,之前我也不是很清楚,也不知道他和电脑的内存有什么联系.下面就让我们一起来学习一下这个吧. 首先RAM和ROM是什么 RAM和RO ...

  7. iptables交互配置shell脚本

    #!/bin/bash while true do clear echo "———————-menu————————" echo -e "\033[49;32;1m(1) ...

  8. How To Use DBLink In Oracle Forms 6i

    You want to connect multiple databases in oracle forms to perform certain tasks, for example you nee ...

  9. 20.fastDFS集群java代码测试

    1.工程结构   2.代码内容 FastdfsClientTest.java代码   package cn.itcast.fastdfs.cliennt; import java.io.File; i ...

  10. IE7下总提示" 缺少标识符、字符串或数字"

    用Jquery easyUI ,IE7下列表显示不了,总提示缺少标识符.字符串或数字.而google,maxthon,firefox,IE10等却没有问题. 原因是Json末尾多了个逗号.IE7下js ...