1880: [Sdoi2009]Elaxia的路线
2017-07-08 19:43
344 查看
题目链接
题目大意:求无向图中,两对点间最短路的最长公共路径
题解:先求出最短路图。然后可以建成DAG跑最长链,题解,因为题目中的公共路径没有限制方向,这里直接枚举点对进行判断就可以了……
我的收获:最短路图……get新的判断最短路方法……似乎一种枚举边一种枚举点……
题目大意:求无向图中,两对点间最短路的最长公共路径
题解:先求出最短路图。然后可以建成DAG跑最长链,题解,因为题目中的公共路径没有限制方向,这里直接枚举点对进行判断就可以了……
我的收获:最短路图……get新的判断最短路方法……似乎一种枚举边一种枚举点……
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> using namespace std; #define M 1505 #define INF 0x3f3f3f3f int 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; }
相关文章推荐
- bzoj 1880: [Sdoi2009]Elaxia的路线【spfa+拓扑排序】
- [BZOJ1880][Sdoi2009]Elaxia的路线(最短路+拓扑序)
- bzoj 1880: [Sdoi2009]Elaxia的路线
- bzoj1880: [Sdoi2009]Elaxia的路线
- (bzoj 1880 [Sdoi2009]Elaxia的路线)<最短路+拓扑最长链>
- BZOJ-1880-Elaxia的路线-SDOI2009-SPFA+拓扑排序
- 【BZOJ1880】[Sdoi2009]Elaxia的路线 最短路+DP
- 【BZOJ1880】【SDOI2009】Elaxia的路线
- bzoj 1880: [Sdoi2009]Elaxia的路线 最短路
- BZOJ1880: [Sdoi2009]Elaxia的路线
- bzoj1880: [Sdoi2009]Elaxia的路线
- BZOJ1880: [Sdoi2009]Elaxia的路线|dijksrtra|暴力
- 【BZOJ 1880】 [Sdoi2009]Elaxia的路线
- [BZOJ1880][Sdoi2009] Elaxia的路线 (最短路,拓扑排序)
- bzoj 1880: [Sdoi2009]Elaxia的路线(拓扑排序+spfa)
- [BZOJ1880][SDOI2009]Elaxia的路线(SPFA+拓扑排序+DP)
- BZOJ 1880 Sdoi2009 Elaxia的路线 SPFA+拓扑排序
- 【SDOI2009】【BZOJ1880】Elaxia的路线
- BZOJ1880 [Sdoi2009]Elaxia的路线 【最短路 + dp】
- bzoj1880 [Sdoi2009]Elaxia的路线