1880: [Sdoi2009]Elaxia的路线
来源:互联网 发布:最优化方法推荐 编辑:程序博客网 时间:2024/05/22 03:01
题目链接
题目大意:求无向图中,两对点间最短路的最长公共路径
题解:先求出最短路图。然后可以建成DAG跑最长链,题解,因为题目中的公共路径没有限制方向,这里直接枚举点对进行判断就可以了……
我的收获:最短路图……get新的判断最短路方法……似乎一种枚举边一种枚举点……
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;#define M 1505#define INF 0x3f3f3f3fint n,m,t;int s1,t1,s2,t2,ls1,ls2;int head[M],ds1[M],dt1[M],ds2[M],dt2[M],q[1000005];bool vis[M];struct edge{int to,val,nex;}e[M*M];void add(int u,int v,int w){e[t]=(edge){v,w,head[u]},head[u]=t++;}bool judge(int x){return ds1[x]+dt1[x]==ls1&&ds2[x]+dt2[x]==ls2;}//判断x在最短路上void spfa(int s,int d[]){ int l=1,r=0; for(int i=1;i<=n;i++) d[i]=INF,vis[i]=0; d[s]=0,vis[s]=1,q[++r]=s; while(l<=r){ int u=q[l++];vis[u]=0; for(int i=head[u];i!=-1;i=e[i].nex){ int v=e[i].to; if(d[v]>d[u]+e[i].val){ d[v]=d[u]+e[i].val; if(!vis[v]) vis[v]=1,q[++r]=v; } } }}void work(){ spfa(s1,ds1),spfa(t1,dt1); spfa(s2,ds2),spfa(t2,dt2); ls1=ds1[t1],ls2=ds2[t2]; int ans=-INF; for(int i=1;i<=n;i++) if(judge(i)) for(int j=1;j<=n;j++) if(judge(j)) ans=max(ans,abs(ds1[i]-ds1[j])); cout<<ans<<endl;}void init(){ int x,y,z;t=0;memset(head,-1,sizeof(head)); scanf("%d%d",&n,&m); scanf("%d%d%d%d",&s1,&t1,&s2,&t2); for(int i=1;i<=m;i++){ scanf("%d%d%d",&x,&y,&z); add(x,y,z),add(y,x,z); }}int main(){ init(); work(); return 0;}
阅读全文
0 0
- 1880: [Sdoi2009]Elaxia的路线
- [SDOI2009]Elaxia的路线
- [SDOI2009]Elaxia的路线
- 【bzoj 1880】: [Sdoi2009]Elaxia的路线
- 【BZOJ 1880】 [Sdoi2009]Elaxia的路线
- 【39.87%】【BZOJ 1880】[Sdoi2009]Elaxia的路线
- BZOJ 1880 [Sdoi2009]Elaxia的路线
- 【SDOI2009】【BZOJ1880】Elaxia的路线
- BZOJ1880: [Sdoi2009]Elaxia的路线
- luogu2149 [SDOI2009]Elaxia的路线
- bzoj1880 [Sdoi2009]Elaxia的路线
- bzoj1880: [Sdoi2009]Elaxia的路线
- bzoj1880: [Sdoi2009]Elaxia的路线
- 【BZOJ1880】【SDOI2009】Elaxia的路线
- BZOJ 1880 Sdoi2009 Elaxia的路线 SPFA+拓扑排序
- BZOJ-1880-Elaxia的路线-SDOI2009-SPFA+拓扑排序
- bzoj 1880: [Sdoi2009]Elaxia的路线(拓扑排序+spfa)
- bzoj 1880: [Sdoi2009]Elaxia的路线 最短路
- 特征工程(三) 数据标准化和归一化
- messager.js
- jzoj 1278_排队_线段树
- bzoj1231: [Usaco2008 Nov]mixup2 混乱的奶牛
- validatebox.js
- 1880: [Sdoi2009]Elaxia的路线
- 共用体和结构体所占内存大小的计算方法二
- Ajax如何设置同步请求
- 2017暑假集训 div1 搜索进阶(1)
- ARM体系结构
- 安装JDK后出现 只能运行JAVA不能运行JAVAC
- 新浪微博发表内容ajax拼接
- 设计模式-Singleton模式(只有一个实例)
- Android studio如何更改应用程序的图标以及名称