⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ac1078.pas

📁 uralcode
💻 PAS
字号:
program ural1078;
const
  maxn=499;
var
  seg:array[0..maxn,1..2]of integer;
  indeg,pre:array[1..maxn]of integer;
  q,dep:array[0..maxn]of integer;
  n,i,j,front,rear:integer;
function nest(a,b:integer):boolean;{True if a contains b}
  begin
    nest:=(seg[a,1]<seg[b,1]) and (seg[a,2]>seg[b,2]);
  end;
begin
  readln(n);
  for i:=1 to n do
    readln(seg[i,1],seg[i,2]);
  seg[0,1]:=-10001;seg[0,2]:=10001;

  for i:=1 to n do
    indeg[i]:=1;
  for i:=1 to n do
    for j:=1 to n do
      if nest(i,j) then inc(indeg[j]);

  front:=-1;rear:=0;q[0]:=0;dep[0]:=0;
  repeat
    inc(front);
    for i:=1 to n do
      if nest(q[front],i) then begin
        dec(indeg[i]);
        if indeg[i]=0 then begin
          inc(rear);
          q[rear]:=i;
          pre[q[rear]]:=q[front];
          dep[rear]:=dep[front]+1;
        end;
      end;
  until front=rear;

  writeln(dep[rear]);
  i:=q[rear];
  while pre[i]>0 do begin
    write(i,' ');
    i:=pre[i];
  end;
  writeln(i);
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -