さいたんらくけいさん
3267 ワード
Description
1つの無方向図には、自己ループがなく、すべてのエッジの重み値が1であり、1つの点対(a,b)に対して、すべてのaとbの間の最も短絡的な点の合計個数を出力します.
Input
第1行n,mはn個の点を表し,m辺は次のm行,各行2個の数a,bはa,bの間に次の数pがあることを示し,問題の数は次のp行,各行2個の数a,bは質問a,bを表す
Output
各問合せについて、1つの数cが出力され、a,b間の最も短絡した上点の合計数を表す
Sample Input
5 6 1 2 1 3 2 3 2 4 3 5 4 5 3 2 5 5 1 2 4 Sample Output
4 3 2 Hint
範囲:n<=100,p<=5000
コード:
1つの無方向図には、自己ループがなく、すべてのエッジの重み値が1であり、1つの点対(a,b)に対して、すべてのaとbの間の最も短絡的な点の合計個数を出力します.
Input
第1行n,mはn個の点を表し,m辺は次のm行,各行2個の数a,bはa,bの間に次の数pがあることを示し,問題の数は次のp行,各行2個の数a,bは質問a,bを表す
Output
各問合せについて、1つの数cが出力され、a,b間の最も短絡した上点の合計数を表す
Sample Input
5 6 1 2 1 3 2 3 2 4 3 5 4 5 3 2 5 5 1 2 4 Sample Output
4 3 2 Hint
範囲:n<=100,p<=5000
コード:
var
a:array[0..200,0..200] of longint;
n,m,z,x,y,i,j,k,sum:longint;
begin
readln(n,m);
for i:=1 to n do
for j:=1 to n do
a[i,j]:=10000000;
for i:=1 to m do
begin
readln(x,y);
a[x,y]:=1;
a[y,x]:=1;
end;
for k:=1 to n do
for i:=1 to n do
for j:=1 to n do
if (i<>j)and(i<>k)and(j<>k) then
if a[i,j]>a[i,k]+a[k,j] then
begin
a[i,j]:=a[i,k]+a[k,j];
end;
readln(z);
for i:=1 to z do
begin
sum:=0;
readln(x,y);
for j:=1 to n do
if a[x,j]+a[j,y]=a[x,y] then
if (x<>j)and(j<>y) then
inc(sum);
writeln(sum+2);
end;
end.