C. Dijkstra 算法:vara:array[1..maxn,1..maxn] of integer;b,pre:array[1..maxn] of integer; {pre[i]指最短路径上I的前驱结点}mark:array[1..maxn] of boolean;procedure dijkstra(v0:integer);

题目

C. Dijkstra 算法:

var

a:array[1..maxn,1..maxn] of integer;

b,pre:array[1..maxn] of integer; {pre[i]指最短路径上I的前驱结点}

mark:array[1..maxn] of boolean;

procedure dijkstra(v0:integer);


相似考题
更多“C. Dijkstra 算法: vara:array[1..maxn,1..maxn] of integer;b,pre:array[1..maxn] of integer ”相关问题
  • 第1题:

    最短路径

    A.标号法求解单源点最短路径:

    var

    a:array[1..maxn,1..maxn] of integer;

    b:array[1..maxn] of integer; {b[i]指顶点i到源点的最短路径}

    mark:array[1..maxn] of boolean;

    procedure bhf;

    var

    best,best_j:integer;


    正确答案:

     

    begin
    fillchar(mark,sizeof(mark),false);
    mark[1]:=true; b[1]:=0;{1为源点}
    repeat
    best:=0;
    for i:=1 to n do
    If mark[i] then {对每一个已计算出最短路径的点}
    for j:=1 to n do
    if (not mark[j]) and (a[i,j]>0) then
    if (best=0) or (b[i]+a[i,j]<best) then begin
    best:=b[i]+a[i,j]; best_j:=j;
    end;
    if best>0 then begin
    b[best_j]:=best;mark[best_j]:=true;
    end;
    until best=0;
    end;{bhf}

  • 第2题:

    高精度数的定义:

    type

    hp=array[1..maxlen] of integer;

    1.高精度加法

    procedure plus ( a,b:hp; var c:hp);

    var i,len:integer;


    正确答案:

     

    begin
    fillchar(c,sizeof(c),0);
    if a[0]>b[0] then len:=a[0] else len:=b[0];
    for i:=1 to len do begin
    inc(c[i],a[i]+b[i]);
    if c[i]>10 then begin dec(c[i],10); inc(c[i+1]); end; {进位}
    end;
    if c[len+1]>0 then inc(len);
    c[0]:=len;
    end;{plus}

  • 第3题:

    下列不是Android的数组资源标签的是

    A.<array/>

    B.<text-array/>

    C.<integer-array/>

    D.<string-array/>


    主要放置一些文件资源,这些文件会被原封不动打包到apk里面。

  • 第4题:

    计算图的传递闭包

    Procedure Longlink;

    Var

    T:array[1..maxn,1..maxn] of boolean;


    正确答案:

     

    Begin
    Fillchar(t,sizeof(t),false);
    For k:=1 to n do
    For I:=1 to n do
    For j:=1 to n do T[I,j]:=t[I,j] or (t[I,k] and t[k,j]);
    End;

  • 第5题:

    组合的生成(1..n中选取k个数的所有方案)

    procedure solve(dep,pre:integer);

    var

    i:integer;


    正确答案:

     

    begin
    if dep=k+1 then begin writeln(s);exit; end;
    for i:=1 to n do
    if (not used[i]) and (i>pre) then begin
    s:=s+chr(i+ord(''0''));used[i]:=true;
    solve(dep+1,i);
    s:=copy(s,1,length(s)-1); used[i]:=false;
    end;
    end;