题解

91 条题解

  • 0
    @ 2009-10-26 22:29:58

    楼下题解 好像和楼下的楼下的楼下的楼下的 除了变量名 其他都一样

    我日 一开始没看到‘-1’叫了3次都是80 终于过了

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 9ms

    ├ 测试数据 10:答案正确... 134ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:143ms

  • 0
    @ 2009-10-25 20:57:33

    Program P1423;

    Var a:array[0..200,0..200] of longint;

    i,j,k,l,m,n:Longint;

    t:array[0..200] of longint;

    a1,a2,a3:longint;

    Begin

    Readln(n,m);

    for i:=1 to n do

    for j:=1 to n do a:=10000000;

    for i:=1 to n do read(t[i]);

    for i:=1 to m do

    begin

    read(a1,a2,a3);

    if a[a1,a2]>a3+t[a1] then a[a1,a2]:=a3+t[a1];

    end;

    for k:=1 to n do

    for i:=1 to n do

    for j:=1 to n do

    if ((ik) and (jk)) then

    if a>a+a[k,j] then

    begin

    a:=a+a[k,j];

    end;

    if a[1,1]10000000 then writeln(a[1,1]) else writeln(-1);

    End.

  • 0
    @ 2009-10-24 07:55:13

    用正向边和反向边分别做一遍spfa

  • 0
    @ 2009-10-20 20:49:59

    Accepted 有效得分:100 有效耗时:285ms

    好丑的时间虽然又是个Floyd。。

  • 0
    @ 2009-10-15 19:57:17

    program p1423;

    var a:array[1..200,1..200] of longint;

    w:array[1..200] of longint;

    i,j,k,l,m,n,r,q,p:longint;

    begin

    readln(n,m);

    for i:=1 to n do

    for j:=1 to n do a:=10000000;

    for i:=1 to n do readln(w[i]);

    for i:=1 to m do

    begin readln(p,q,r);

    if r+w[q]a+a[k,j] then

    a:=a+a[k,j];

    if a[1,1]=10000000 then a[1,1]:=-1;

    writeln(a[1,1]);

    end.

    弗洛伊德。。。。AC

  • 0
    @ 2009-09-23 16:28:42

    Accepted 有效得分:100 有效耗时:0ms

    第一次SPFA...boolean搞错了....郁闷....

  • 0
    @ 2009-09-21 19:43:08

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 9ms

    ├ 测试数据 10:答案正确... 25ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:34ms

    一次AC

    但题目描述不是很清楚

  • 0
    @ 2009-08-28 03:00:42

    赤裸裸的FLOYD。 只要把弯道的时间加到边权里就好了。

  • 0
    @ 2009-08-20 21:26:07

    相当简单

    floyd

  • 0
    @ 2009-08-19 18:32:55

    200*200

  • 0
    @ 2009-08-15 23:24:33

    有向图FLOYD很好编、

    那要是换成无向图、求最短回路、

    FLOYD该怎么用、神牛罩我把、

  • 0
    @ 2009-08-13 18:17:50

    27行。。。

    短——————

  • 0
    @ 2009-08-08 15:50:23

    祝贺上一星半了 50题 感谢

  • 0
    @ 2009-07-28 16:34:00

    var a,d:array[1..200,1..200] of longint;

    w:array[1..200] of longint;

    i,j,k,n,s,m,x,y,z:longint;

    begin

    readln(n,m);

    for i:=1 to n do

    for j:=1 to n do

    d:=maxint;

    for i:=1 to n do readln(w[i]);

    for i:=1 to m do

    begin

    readln(x,y,z);

    if a[x,y]0 then

    begin

    if z+w[y]d+d[k,j] then

    d:=d+d[k,j];

    if d[1,1]=maxint then

    write('-1');

    if d[1,1]maxint then

    write(d[1,1]);

    end.

    比较水……

    -1!!!!!!!!!!

  • 0
    @ 2009-07-02 18:51:45

    纯粹的floyd,让我大惊失色

    注意处理一下输入。接下来超级原版floyd。还是秒杀+一次AC!

    汗!

    program p1423;

    var a,d:array[1..200,1..200] of longint;

    w:array[1..200] of longint;

    i,j,k,n,s,m,x,y,z:longint;

    begin

    readln(n,m);

    for i:=1 to n do

    for j:=1 to n do

    d:=maxint;

    for i:=1 to n do readln(w[i]);

    for i:=1 to m do

    begin

    readln(x,y,z);

    if a[x,y]0 then

    begin

    if z+w[y]d+d[k,j] then

    d:=d+d[k,j];

    if d[1,1]=maxint then

    write('-1');

    if d[1,1]maxint then

    write(d[1,1]);

    end.

  • 0
    @ 2009-06-27 14:23:51

    program ll;

    var

    wq:array[0..300] of longint;

    {lt:array[0..100,0..100] of boolean;}

    a:array[0..300,0..300] of longint;

    v:array[0..300] of boolean;

    n,i,x,y,t,j,max:longint;

    m,p:longint;

    begin

    {fillchar(lt,sizeof(lt),false);}

    fillchar(a,sizeof(a),0);

    readln(n,m);

    for i:= 1 to n do

    readln(wq[i]);

    for i:=1 to m do

    begin

    readln(x,y,t);

    if a[x,y]0 then

    if t+wq[y]

  • 0
    @ 2009-06-13 21:52:22

    SPFA一次就0ms秒杀,可以求出1到2~n点的最小距离d[i],最后只要输出min(d[i]+a)

  • 0
    @ 2009-06-12 19:00:35

    {思想:构连通图,DLOYED键环,(题目中说的赛道可多次经过同一条弯道没用),赛道必须经过弯道1又要找最小环,只需找MIN(G[1,I]+G)(G[1,I]+G是一经过弯道1的环)}

    {读时去重边,只记录最小边}

  • 0
    @ 2009-05-27 15:58:07

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    FLOYD在判重时应该在每次读入边(Z)是加上T(弯道长)然后在MIN{Z,G(I,J)}

    否则80分

  • 0
    @ 2009-05-21 20:29:05

    spfa 终于

信息

ID
1423
难度
5
分类
图结构 | 最短路 点击显示
标签
递交数
1849
已通过
586
通过率
32%
被复制
2
上传者