ENG  RUSTimus Online Judge
Online Judge
Problems
Authors
Online contests
About Online Judge
Frequently asked questions
Site news
Webboard
Links
Problem set
Submit solution
Judge status
Guide
Register
Update your info
Authors ranklist
Current contest
Scheduled contests
Past contests
Rules
back to board

Discussion of Problem 1040. Airline Company

Why I got WA?
Posted by zealot 15 Apr 2003 14:35
program airline;
 const
  max=50;
 var
  map:array[1..max*max,1..2] of longint;
  cover:array[1..max*max] of boolean;
  list:array[1..max*max] of longint;
  n,m:longint;

 procedure readdata;
  var
   i:longint;
  begin
   fillchar(map,sizeof(map),0);
   readln(n,m);
   for i:=1 to m do readln(map[i][1],map[i][2]);
  end;

 procedure print;
  var
   i:longint;
  begin
   writeln('YES');
   for i:=1 to m-1 do write(list[i],' ');
   writeln(list[m]);
   halt;
  end;

 function zhi(x,p,i:longint):boolean;
  var
   j,k,min,t,j1:longint;
   link:array[1..max*max] of longint;
  begin
   fillchar(link,sizeof(link),0);
   k:=0;
   min:=maxint;
   for j:=1 to m do
    if ((map[j][1]=x)or(map[j][2]=x)) then
     if (list[j]=0)and(p<>j) then
       begin
        zhi:=true;
        exit;
       end
      else if p<>j then
        begin
         inc(k);
         link[k]:=list[j];
         if list[j]<min then min:=list[j];
        end;
   inc(k);
   link[k]:=i;
   if k=1 then
     begin
      zhi:=true;
      exit;
     end;
   for j:=2 to min do
    begin
     t:=0;
     for j1:=1 to k do
      if link[j1] mod j=0 then inc(t);
     if t>=k then
       begin
        zhi:=false;
        exit;
       end;
    end;
   zhi:=true;
  end;

 procedure search(p:longint);
  var
   t,i:longint;
  begin
   if p>m then print
    else
     begin
      for i:=1 to n do
       if not cover[i] then
        if zhi(map[p][1],p,i) then
         if zhi(map[p][2],p,i) then
           begin
            cover[i]:=true;
            list[p]:=i;
            search(p+1);
            list[p]:=0;
            cover[i]:=false;
           end;
     end;
  end;

 procedure main;
  var
   i,j:longint;
  begin
   fillchar(list,sizeof(list),0);
   fillchar(cover,sizeof(cover),0);
   search(1);
  end;

BEGIN
 readdata;
 main;
 writeln('NO');
END.