2016年提高组模拟题(20161114) 锦标赛 ssl 2571 差分约束系统
来源:互联网 发布:意大利语 知乎 编辑:程序博客网 时间:2024/06/05 10:47
分析
题目中的限制条件可以改写为 Y<=X
如果我们有这些限制 Y<=X和 Z<=Y,那么我们可以得到一个新的限制 Z<=X,并且这可以和原来的限制合并在一起。
我们最终的目标是找到缺失的两个人的限制.
所以我们应该去寻找他两的的限制——也就是求最短路。(差分约束系统)
代码
const maxe=10000; maxv=20000;type arr=record x,y,w,next:longint;end;var n,m:longint; a:array[0..maxv] of arr; b:array[0..2] of longint; f:array[0..maxe] of longint; d:array[0..maxe] of longint; i,j,k:longint; s,t:longint; flag,flaj:boolean; max:longint;procedure relax(u,v,w:longint);begin if d[u]+w<d[v] then d[v]:=d[u]+w;end;procedure bellman;var i,j:integer;begin for i:=1 to n do for j:=1 to m do with a[j] do relax(x,y,w); for i:=1 to m do with a[i] do if d[x]+w<d[y] then begin flag:=true; exit; end; flag:=false;end;begin readln(n); fillchar(a,sizeof(a),0); fillchar(d,sizeof(d),$7f); m:=n*(n-1) div 2-1; max:=d[1]; for j:=1 to m do begin with a[j] do begin read(x,y); f[x]:=f[x]+1; f[y]:=f[y]+1; w:=w+1; end; end; for i:=1 to n do if f[i]<>n-1 then begin b[0]:=b[0]+1; b[b[0]]:=i; end; s:=b[1]; t:=b[2]; flaj:=false; d[s]:=0; bellman; if d[t]<>max then begin writeln(s,' ',t); flaj:=true; end; fillchar(d,sizeof(d),$7f); d[t]:=0; bellman; if (d[s]<>max) and not flaj then begin writeln(t,' ',s); flaj:=true; end; if not flaj then writeln(s,' ',t); close(input); close(output);end.
0 0
- 2016年提高组模拟题(20161114) 锦标赛 ssl 2571 差分约束系统
- 2016年提高组模拟题(20161114) 锦标赛
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 【差分约束系统】
- 差分约束系统
- 差分约束系统
- 差分约束系统
- ##差分约束系统##
- 差分约束系统
- 差分约束系统
- 差分约束系统
- Asp.net 连接Oracle数据库
- JVM学习06——类加载器
- Android框架之——afinal
- 【数据结构】CODE[VS] 1531 山峰 (单调栈维护单调递减序列)
- TestNG系列-第五章 测试方法、测试类和测试分组(续6)-代码运行TestNG和BeanShell
- 2016年提高组模拟题(20161114) 锦标赛 ssl 2571 差分约束系统
- swift地图定位(十)自定义定位工具类(从代理模式到闭包模式)
- 勾股定理一日一证连载158
- python中property的使用实例
- tee命令用法
- 设计模式--解释器模式
- shell脚本--流控制
- Android事件分发机制
- 论文阅读 - 《Relation Classification via Multi-Level Attention CNNs》