BZOJ1880: [Sdoi2009]Elaxia的路线
题意:求最短路最长公共距离。
考虑每一条边,如果满足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的路线的更多相关文章
- BZOJ1880: [Sdoi2009]Elaxia的路线(最短路)
1880: [Sdoi2009]Elaxia的路线 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 2049 Solved: 805 题目链接:https ...
- bzoj1880: [Sdoi2009]Elaxia的路线(spfa,拓扑排序最长路)
1880: [Sdoi2009]Elaxia的路线 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 1944 Solved: 759[Submit][St ...
- [BZOJ1880] [Sdoi2009] Elaxia的路线 (SPFA & 拓扑排序)
Description 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w**每天都要奔波于宿舍和实验室之间, ...
- [luogu2149][bzoj1880][SDOI2009]Elaxia的路线【拓扑排序+最短路+DP】
题目描述 最近,Elaxia和w的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间. Elaxia和w每天都要奔波于宿舍和实验室之间,他们 希望在节约时间 ...
- BZOJ1880:[SDOI2009]Elaxia的路线(最短路,拓扑排序)
Description 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w**每天都要奔波于宿舍和实验室之间, ...
- BZOJ1880 [Sdoi2009]Elaxia的路线 【最短路 + dp】
题目 最近,Elaxia和w的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w每天都要奔波于宿舍和实验室之间,他们 希望在节约时间的前提 ...
- 【BZOJ1880】[Sdoi2009]Elaxia的路线(最短路)
[BZOJ1880][Sdoi2009]Elaxia的路线(最短路) 题面 BZOJ 洛谷 题解 假装我们知道了任意两点间的最短路,那么我们怎么求解答案呢? 不难发现公共路径一定是一段连续的路径(如果 ...
- 【BZOJ1880】[Sdoi2009]Elaxia的路线 最短路+DP
[BZOJ1880][Sdoi2009]Elaxia的路线 Description 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起 ...
- 【BZOJ1880】[SDOI2009]Elaxia的路线 (最短路+拓扑排序)
[SDOI2009]Elaxia的路线 题目描述 最近,\(Elaxia\)和\(w**\)的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间. \(El ...
随机推荐
- Android——初探Dagger2依赖注入
1,在做项目时,经常需要在一个对象里去创建另一个对象的示例,这种行为是产生耦合的常见形式,对于一个大型项目来说,过多的相互依赖会导致代码难以维护,很容易就会碰到修改一个小需求需要大面积的修改各种代码, ...
- 随机获取数据库中的某一条数据(基于yii2框架开发)
注意: 使用PHP函数array_rand()得到的是这个数组中的那个值相对应的下标键值,需要配合原来的数组进行,例如: $rand_keys = array_rand($ids,1); $id = ...
- word2013 blog test
测试一:style里的内容能保存吗?: int read; byte * buf; int tries; int read; byte * buf ...
- Android Volley完全解析
1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据.Android系统中主要提供了两种方式来进行H ...
- 关于.net编译时目标生成平台
x86: 将程序集编译为由兼容 x86 的 32 位公共语言运行库运行. x64: 将程序集编译为由支持 AMD64 或 EM64T 指令集的计算机上的 64 位公共语言运行库运行. anycpu:( ...
- iOS及Mac开源项目和学习资料【超级全面】
UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITable ...
- R开发环境(Eclipse+StatET)
引用:http://cos.name/2008/12/eclipse-statet-for-r-editor/ StatET(www.walware.de/goto/statet) 1. 安装软件 s ...
- [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的连接恢复和命令拦截
这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第四篇:MVC程序中实体框架的连接恢复和 ...
- chrome的timeline中stalled问题解析
原文地址 :http://foio.github.io/chrome-stalled/ 在公司国做一个运营活动,上线后PM总是抱怨访问速度过慢,影响运营效果.然而从前端的角度来说我已经做了如下优化: ...
- 推荐10个bootstrap及其他框架的后台管理模板
相对于网站前台炫目多彩的设计,网址后台的设计模板貌似有点少,在这里推荐10个可以免费下载的~ 1.自适应超酷整站 win8风格的Bootstrap响应式网站后台管理模板-Apricot 2.boots ...