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

📄 ex.dpr

📁 tongji acm-online judge solution
💻 DPR
字号:
program Ural_1280(Input, Output);
const
    MaxN = 1000;
    MaxE = 100000;
type
    TIndex = Longint;
    TEdge = record
        X, Y: Integer;
    end;
    TEdges = array[1..MaxE] of TEdge;
    TIndegree = array[1..MaxN] of Integer;
    THash = array[1..MaxN] of TIndex;
var
    E: TEdges;
    Ind: TIndegree;
    H: THash;
    N, M: TIndex;

procedure Sift(l, r: TIndex);
var
    i, j: TIndex;
    tmp: TEdge;
    finished: Boolean;
begin
    i := l;
    j := i * 2;
    tmp := E[l];
    finished := false;
    while (j <= r) and (not finished) do
    begin
        if (j < r) and (E[j].X < E[j + 1].X) then
            Inc(j);
        if tmp.X >= E[j].X then
            finished := true
        else
        begin
            E[i] := E[j];
            i := j;
            j := i * 2;
        end;
    end;
    E[i] := tmp;
end;

procedure HeapSort;
var
    i: TIndex;
    tmp: TEdge;
begin
    for i := M div 2 downto 1 do
        Sift(i, M);
    for i := M downto 1 do
    begin
        tmp := E[1];
        E[1] := E[i];
        E[i] := tmp;
        Sift(1, i - 1);
    end;
end;

procedure Main;
var
    i, j, t: TIndex;
begin
    FillChar(E, SizeOf(E), 0);
    FillChar(Ind, SizeOf(Ind), 0);
    FillChar(H, SizeOf(H), 0);
    Readln(N, M);
    for i := 1 to M do
    begin
        Readln(E[i].X, E[i].Y);
        Inc(Ind[E[i].Y]);
    end;
    HeapSort;
    for i := 1 to M do
        if H[E[i].X] = 0 then
        begin
            H[E[i].X] := i;
        end;
    for i := 1 to N do
    begin
        Read(t);
        if Ind[t] > 0 then
        begin
            Writeln('NO');
            Exit;
        end
        else
        begin
            j := H[t];
            if j <> 0 then
            begin
                while (E[j].X = t) and (j <= M) do
                begin
                    Dec(Ind[E[j].Y]);
                    Inc(j);
                end;
            end;
        end;
    end;
    Writeln('YES');
end;
begin
    {Assign(Input, 'i.txt');
    Reset(Input);
    Assign(Output, 'o.txt');
    Rewrite(Output);   }
    Main;
   { Close(Input);
    Close(Output);   }
end.

⌨️ 快捷键说明

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