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 ...
随机推荐
- POJ - 1132Border
POJ - 1132Border Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %I64d & %I64u Descrip ...
- PythonPP+lambda:示例
直接上代码. python PP 下载, 可以到官网下载 Python PP 下载 lambda 能做的, 基本上普通函数都可以做到. lambda 的主要作用是简化表达式, 并且似乎尤其适合于表达科 ...
- gulp watch error ENOSPC
in linux you fix this with the command:echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sy ...
- Thinkphp单字母快捷键
在ThinkPHP中有许多使用简便的单字母函数(即快捷方法),可以很方便开发者快速的调用,但是字母函数却不方便记忆,本文将所有的字母函数总结一下,以方便以后查找. 1.U() URL组装 支持不同UR ...
- IOS开发之异步加载网络图片并缓存本地实现瀑布流(二)
/* * @brief 图片加载通用函数 * @parma imageName 图片名 */ - (void)imageStartLoading:(NSString *)imageName{ NSUR ...
- InfoObject共享
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- phonegap 3.3教程 地理信息api教程
一 准备工作 phonegap3.3的地理信息教程.从零开始,首先要新建一个项目从命令行启动 可以看到这是默认的生成的www目录,在这个目录里是最原始的html文件,编译的时候在根据这里的文件生成an ...
- WebSocket实战之————Workerman服务器的安装启动
安装php apt-get install php5-cli root@iZ23b64pe35Z:/home/www# php -v PHP 5.5.9-1ubuntu4.20 (cli) (buil ...
- 高斯混合模型与EM算法
对于高斯混合模型是干什么的呢?它解决什么样的问题呢?它常用在非监督学习中,意思就是我们的训练样本集合只有数据,没有标签. 它用来解决这样的问题:我们有一堆的训练样本,这些样本可以一共分为K类,用z(i ...
- DEELX 正则表达式引擎(v1.2)
DEELX 正则表达式引擎(v1.2) 简介见文末. 选择使用deelx的理由:全部代码位于一个头文件(.h)中, 比任何引擎都使用简单和方便. 利用分组从字符串当中提取出化学元素英文名.比如 Ag, ...