131 条题解
-
0yujiakun1995 LV 7 @ 2009-07-09 08:55:27
用floyed时
for(i=1;i -
02009-07-03 21:23:18@
样例错了……
-
02009-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] -
02009-06-15 10:10:21@
如果你用dijkstra永远过不了......
一天換來的經驗
-
02009-05-15 22:52:43@
开始,我以为只输出一条路上的点数,然后 0 555555....
经过众语文大牛指点,我开始强烈鄙视出题者 100 hahahahaha -
02009-05-02 19:29:14@
额...开始我还以为就是求最短路呢...
可是..中间可以分流交汇... -
02009-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 -
02009-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还秒杀,严重鄙视出题人.....
完全是语文题目嘛 -
02009-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] -
02009-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 -
02009-02-03 22:41:17@
Accepted 有效得分:100 有效耗时:0ms
floyd算法+O(n)搜索
-
02009-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] -
02009-01-18 08:44:15@
貌似数据很弱啊.
-
02008-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,输出 -
02008-11-13 08:22:16@
数据很弱,,floyed都秒闪。。
但是要注意初始化,,变态的初始化要把自身都赋值为无穷大。。
因为这个还wa了一遍。。真是。。30行代码。。 -
02008-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. -
02008-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] -
02008-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 -
02008-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] -
02008-11-07 10:23:33@
这一题可以用集合,集合可以秒杀!!!!!!!
将集合和floyd结合起来,很简单