上学的道路 TYVJ1310
来源:互联网 发布:sqlserver 字符串函数 编辑:程序博客网 时间:2024/04/28 22:05
题目连接:http://new.tyvj.cn/Problem_Show.aspx?id=1310
主要是求2对点的最短路的公共部分最大是多少。
先瞎搞求出4个点的单源最短路。dij和spfa都可以。
然后对于任意两点i,j
如果d[x1,i]+d[y1,i]=d[x1,y1] 并且 d[x1,j]+d[y1,j]=d[x1,y1] 并且d[x2,i]+d[y2,i])=d[x2,y2]) 且 d[x2,j]+d[y2,j])=d[x2,y2]
那么就可以判定I,J之间的在这两对点的最短路的公共部分,那么中间的那段部分就是公共长度了。
var x,y,x1,y1,x2,y2,ans,aa,i,j,k,z,n,m,tot:longint; v:array[-10..1600] of boolean; q:array[-10..1500000] of longint; d:array[-10..5,-10..1600] of longint; next,a,c:array[-10..600005] of longint; b:array[-10..1600] of longint;procedure spfa(k,o:longint); var i,h,t,x,y,z,p:longint; begin for i:=1 to n do d[k,i]:=999999999;d[k,o]:=0;h:=1;t:=1;q[h]:=o;fillchar(v,sizeof(v),true);v[o]:=false;while h<=t do begin x:=q[h];p:=b[x];while p<>0 do begin y:=c[p];z:=a[p];if (d[k,x]+z)<d[k,y] then begin d[k,y]:=d[k,x]+z;if v[y] then begin v[y]:=false;t:=t+1;q[t]:=y; end; end;p:=next[p]; end; h:=h+1;v[x]:=true; end; end;function check(k,y,z:longint):boolean; begin if ((d[1,k]+d[2,y]+z)=d[1,y1]) and ((d[3,k]+d[4,y]+z)=d[3,y2]) then exit(true); if ((d[1,k]+d[2,y]+z)=d[1,y1]) and ((d[3,y]+d[4,k]+z)=d[3,y2]) then exit(true); exit(false); end;function try(k:longint):longint; var t,p,x,y,z:longint; begin t:=0; v[k]:=false; p:=b[k];y:=c[p];z:=a[p];while p<>0 do begin if v[y] then if check(k,y,z) then begin x:=try(y)+z; if x>ans then ans:=x; if x>t then t:=x;end else if (d[1,k]+d[2,y]+z)=d[1,y1] then begin x:=try(y); if x>ans then ans:=x;end; p:=next[p];y:=c[p]; z:=a[p]; end;v[k]:=true; if t>0 then exit(t) else exit(0); end;begin read(n,m,x1,y1,x2,y2); tot:=0; for i:=1 to m do begin read(x,y,z); tot:=tot+1; next[tot]:=b[x]; b[x]:=tot; a[tot]:=z; c[tot]:=y; tot:=tot+1; next[tot]:=b[y]; b[y]:=tot; a[tot]:=z; c[tot]:=x;end; spfa(1,x1); spfa(2,y1); spfa(3,x2); spfa(4,y2); fillchar(v,sizeof(v),true); ans:=0; for i:=1 to n do for j:=1 to n do if ((d[1,i]+d[2,i])=d[1,y1]) and ((d[1,j]+d[2,j])=d[1,y1]) then if ((d[3,i]+d[4,i])=d[3,y2]) and ((d[3,j]+d[4,j])=d[3,y2]) then begin x:=abs(d[1,i]-d[1,j]); if x>ans then ans:=x; end; writeln(ans);end.
Oct_gap 201说得对。。
我太垃圾了
这个题因为数组开小了弄了半天。
我太垃圾了
- 上学的道路 TYVJ1310
- 在上学的时候
- 上学
- 我上学的一点感想
- 上学时候的JAVA笔记
- 妇产课本上学不到的
- 大一上学期的作业
- 大二上学期的规划~
- 我的大二上学期
- 上学与不上学的区别(奇文共赏)
- 上学与不上学的区别(奇文共赏)
- 上学与不上学的区别(奇文共赏)
- 上学的时候瞎弄的
- 本人上学期做的一个网站
- 再帖个上学期写的记事本程序
- 上学之后看过的书(需要更新)
- 关于上学期软工实验的思考
- 大三上学期写的所有代码
- 请问给应用在AppStore中评分该如何完成? 评论?
- java上机 第五周 任务4 测试三个类
- [iOS] iOS 6的Rotation
- Buffer Cache 原理
- IOS5基础之十-----表视图
- 上学的道路 TYVJ1310
- ArcSDE版本协调及提交时一些常见错误处理
- tomcat src
- springmvc <url-pattern>xxx</url-pattern>配置
- 应用中打开app store的评论页面和下载页面 .
- POJ 3481 Double Queue【SBT】
- tsm的copy pool及collocate参数
- 在对话框中加入属性页
- iPhone中使用ShareKit一键分享到Facebook,Twitter等多平台