回 帖 发 新 帖 刷新版面

主题:关于必经之路的问题!!求助!!!

新牛到部队,CG要求它们每天早上搞晨跑,从A农场跑到B农场。从A农场到B农场中有n一2个路口,分别标上号,A农场为1号,B农场为n号,路口分别为2..n-1号,从A农场到B农场有很多条路径可以到达,而cG发现有的路口是必须经过的,即每条路径都经过的路口,CG要把它们记录下来,这样cG就可以先到那个路口,观察新牛们有没有偷懒,而你的任务就是找出所有必经路口。
    【输入数据】
    第一行两个用空格隔开的整数n(3≤n≤2000)和e(1≤e≤8000)。
    接下来从第2到第e+1行,每行两个用空格隔开的整数p和q,表示路口p和q之间有路径直达。
    输入数据保证必经路口一定存在,并且每个路口都和A农场、B农场相连通。
    【输出数据】
    第一行一个整数m,表示必经路口的数目。
    第二行按从小到大的顺序依次输出每个必经路口的编号,每两个数之间用一个空格隔开。
   注意:不包括起点和终点。
【样例输入】
    6 6
    1 2
    2 4
    2 3
    3 5
    4 5
    5 6
【样例输出】
2
2 5

回复列表 (共2个回复)

沙发

代码有了:

var i,j,m,n:integer;
    a,b,c:array[1..100] of integer;
function pd(k:integer):boolean;
var z:integer;
begin
  pd:=true;
  for z:=1 to j do if (k>a[z]) and (k<b[z]) then begin
    pd:=false;
    exit;
  end;
end;
begin
  readln(i,j);
  n:=0;
  for m:=1 to j do readln(a[m],b[m]);
  for m:=1 to j do if pd(m) then begin
    inc(n);
    c[n]:=m;
  end;
  writeln(n-2);
  for m:=2 to n-1 do write(c[m],' ');
  readln
end.

还来不及加注释,能看懂多少算多少吧!

板凳

对,定义数组的时候数组下标范围给小了,你自己改改吧!

我来回复

您尚未登录,请登录后再回复。点此登录或注册