社区讨论

40分,求大佬指点

P2176[USACO11DEC] RoadBlock S / [USACO14FEB] Roadblock G/S参与者 1已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mi86lgr4
此快照首次捕获于
2025/11/21 09:28
4 个月前
此快照最后确认于
2025/11/21 09:28
4 个月前
查看原帖
Pascal 40分,求大佬指点
CPP
var n,m,i,sum,cnt,max,min:longint;
a,b,c,d,x,y,z,f,f1:array[0..100000] of longint;
procedure add(x,y,z:longint);
begin
cnt:=cnt+1;a[cnt]:=y;b[cnt]:=d[x];d[x]:=cnt;c[cnt]:=z;
end;
procedure spfa;
var i,t,w,j:longint;
begin
fillchar(f,sizeof(f),63);f[1]:=0;f1[1]:=1;t:=1;w:=1;
while t<=w do
  begin
  j:=d[f1[t]];
  while j>0 do
    begin
    if f[a[j]]>f[f1[t]]+c[j] then
      begin
      f[a[j]]:=f[f1[t]]+c[j];
      w:=w+1;
      f1[w]:=a[j];
      end;
    j:=b[j];
    end;
  t:=t+1;
  end;
end;
begin
readln(n,m);
for i:=1 to m do
  begin
  readln(x[i],y[i],z[i]);
  add(x[i],y[i],z[i]);add(y[i],x[i],z[i]);
  end;
spfa;max:=f[n];
for i:=1 to n do
  begin
  c[2*i-1]:=c[2*i-1]*2;c[2*i]:=c[2*i]*2;
  spfa;if f[n]>sum then sum:=f[n];
  c[2*i-1]:=c[2*i-1] div 2;c[2*i]:=c[2*i] div 2;
  end;
writeln(sum-max);
close(input);close(output);
end.

回复

1 条回复,欢迎继续交流。

正在加载回复...