131 条题解

  • 0
    @ 2009-07-09 08:55:27

    用floyed时

    for(i=1;i

  • 0
    @ 2009-07-03 21:23:18

    样例错了……

  • 0
    @ 2009-06-15 11:11:09

    program dian;

    var

    g:array[1..100,1..100] of integer;

    i,j,k,m,n,x,y,ans:longint;

    begin

    readln(n,m);

    for i:=1 to m do

    begin

    read(x,y);

    g[x,y]:=1;

    g[y,x]:=1;

    end;

    for k:=1 to n do

    for i:=1 to n do

    for j:=1 to n do

    if (ij) and (ki) and (ik) then

    if ((g+g[k,j]

  • 0
    @ 2009-06-15 10:10:21

    如果你用dijkstra永远过不了......

    一天換來的經驗

  • 0
    @ 2009-05-15 22:52:43

    开始,我以为只输出一条路上的点数,然后 0 555555....

    经过众语文大牛指点,我开始强烈鄙视出题者 100 hahahahaha

  • 0
    @ 2009-05-02 19:29:14

    额...开始我还以为就是求最短路呢...

    可是..中间可以分流交汇...

  • 0
    @ 2009-03-19 23:23:29

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    受高人指点了一下,把代码缩到30行AC

  • 0
    @ 2009-03-10 17:03:11

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

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

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

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

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

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

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

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

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

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

    floyed还秒杀,严重鄙视出题人.....

    完全是语文题目嘛

  • 0
    @ 2009-02-23 22:27:06

    var map,ans:array[1..100,1..100] of longint;

    var n,i,j,e,x,y,l,k,p,a,b:longint;

    begin

    readln(n,e);

    for i:=1 to e do begin

    readln(x,y);

    map[x,y]:=1;

    map[y,x]:=1;

    end;

    for i:=1 to n do

    for j:=1 to n do

    for k:=1 to n do

    if (map0)and(map[k,j]0)and(ij)and(ik)and(jk) then

    begin

    if ((map+map[k,j]

  • 0
    @ 2009-02-08 13:18:37

    看了半天floyd,居然一次AC了

    floyd,强大的时间复杂度,强大的功能,

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2009-02-03 22:41:17

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

    floyd算法+O(n)搜索

  • 0
    @ 2009-01-20 19:20:43

    90????? whyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy?

    编译通过...

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

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

    ├ 测试数据 03:答案错误... ├ 标准行输出

     ├ 错误行输出

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

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

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

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

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

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

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

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

    Unaccepted 有效得分:90 有效耗时:0ms

    var

    f:array[0..1000,0..2000]of longint;

    vis:array[0..1000]of boolean;

    i,j,k,a,b,c,d,n,m,p,t:longint;

    begin

    readln(n,m);

    for i:=1 to n do

    for j:=1 to n do

    f:=maxint;

    for i:=1 to n do f:=0;

    for i:=1 to m do

    begin

    readln(a,b);

    f[a,b]:=1;

    f:=1;

    end;

    for i:=1 to n do

    for j:=1 to n do

    for k:=1 to n do

    if f+f[k,j]

  • 0
    @ 2009-01-18 08:44:15

    貌似数据很弱啊.

  • 0
    @ 2008-11-22 09:01:44

    1:初始化

    v[i][i]=0;

    v[i][j]=maxint(无路)

    v[i][j]=1(有路)

    2:Floyed

    3:判断(关键)

    如果v[t1][j]+v[j][t2]=v[t1][t2],p[j]=true;

    4:看看有多少个true,输出

  • 0
    @ 2008-11-13 08:22:16

    数据很弱,,floyed都秒闪。。

    但是要注意初始化,,变态的初始化要把自身都赋值为无穷大。。

    因为这个还wa了一遍。。真是。。30行代码。。

  • 0
    @ 2008-11-12 09:47:16

    如果无视begin和end的话,程序很简单.

    时间复杂度O(n^3),Dragon全0ms

    说明数据很弱

    var p,q:array[1..5000] of integer;

    var w:array[1..100,1..100] of integer;

    var i,j,k,l,m,n,o:longint;

    procedure tri(i,j,k:integer);

    var x,y,z:integer;

    begin

    x:=w;

    y:=w;

    z:=w[j,k];

    if (z>x+y) then

    begin

    w[j,k]:=x+y;

    w[k,j]:=x+y;

    end;

    if (y>x+z) then

    begin

    w:=x+z;

    w[k,i]:=x+z;

    end;

    if (x>y+z) then

    begin

    w:=y+z;

    w[j,i]:=y+z;

    end;

    end;

    procedure weisuo;

    var i,j,k:integer;

    begin

    for i:=1 to n-2 do

    begin

    for j:=i+1 to n-1 do

    begin

    for k:=j+1 to n do

    begin

    tri(i,j,k);

    end;

    end;

    end;

    end;

    begin

    readln(n,m);

    for i:=1 to n do

    begin

    for j:=1 to n do

    begin

    w:=2008;

    end;

    w:=0;

    end;

    for i:=1 to m do

    begin

    readln(k,l);

    w[k,l]:=1;

    w[l,k]:=1;

    end;

    readln(o);

    for i:=1 to o do readln(p[i],q[i]);

    for i:=1 to 2 do weisuo;

    for i:=1 to o do

    begin

    l:=0;

    for j:=1 to n do

    begin

    if (w[p[i],j]+w[j,q[i]]=w[p[i],q[i]]) then l:=l+1;

    end;

    writeln(l);

    end;

    end.

  • 0
    @ 2008-11-12 09:26:42

    program p1446;

    const maxint=10000;maxn=100;

    var p,wy,x,y,n,m,i,j,w:longint;

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

    f:array[0..maxn,0..maxn] of longint;

    procedure dijkstra(i:longint);

    var s:array[0..maxn] of 0..1;

    dist:array[0..maxn] of longint;

    j,k,m,w:longint;

    begin

    fillchar(s,sizeof(s),0);

    for j:=1 to n do begin

    if ji then s[j]:=0 else s[j]:=1;

    dist[j]:=a;

    end;

    for k:=1 to n-2 do begin

    w:=maxint;

    for j:=1 to n do

    if (s[j]=0) and (dist[j]

  • 0
    @ 2008-11-11 11:17:47

    编译通过...

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2008-11-10 10:33:08

    先用弗洛伊德

    然后把每个点k扫一遍

    如果dis+dis[k,j]=dis说明k在最短路上

    for i:=1 to n do

    for j:=1 to n do g:=21474836;

    for i:=1 to n do g:=0;

    for i:=1 to m do

    begin

    read(a,b);

    g[a,b]:=1;

    g:=1;

    end;

    for k:=1 to n do

    for i:=1 to n do

    for j:=1 to n do

    if g+g[k,j]

  • 0
    @ 2008-11-07 10:23:33

    这一题可以用集合,集合可以秒杀!!!!!!!

    将集合和floyd结合起来,很简单

信息

ID
1446
难度
5
分类
图结构 | 最短路 点击显示
标签
递交数
3509
已通过
1328
通过率
38%
被复制
10
上传者