xiaozqh
[srcbox.git] / shoot.pas
blobeb7a1672ade5920a360194a9282c19a2fc24e054
1 uses graph;
2 var
3 sht,cnt:array [0..1000] of longint;
4 num:array [0..1000,1..2] of longint;
5 r,c:longint;
6 fail:boolean;
8 procedure draw;
9 var
10 gd,gm,i,j:longint;
12 begin
13 gd:=0;
14 initgraph(gd,gm,'E:\bp\bgi');
15 for i:=1 to c do
16 for j:=1 to r do
17 if (num[i,1]=j) or (num[i,2]=j) then
18 bar(i*10,j*10,i*10+10,j*10+10)
19 else
20 rectangle(i*10,j*10,i*10+10,j*10+10);
21 readln;
22 closegraph;
23 end;
25 procedure run;
26 var
27 i,j,l,min,mw:longint;
29 begin
30 fail:=false;
31 for i:=1 to c do
32 begin
33 if i<=r then
34 begin
35 min:=maxint;
36 for j:=1 to r do
37 if cnt[j]<min then begin min:=cnt[j]; mw:=j; end;
38 end
39 else
40 for j:=1 to c do if sht[j]=0 then begin mw:=num[j,1]; break; end;
41 if min=0 then begin fail:=true; break; end
42 else begin
43 l:=1;
44 while (l<=c) do
45 begin
46 if (sht[l]=0) and ((num[l,1]=mw) or (num[l,2]=mw)) then
47 begin
48 sht[l]:=mw;
49 dec(cnt[num[l,1]]);
50 dec(cnt[num[l,2]]);
51 cnt[mw]:=maxint;
52 break;
53 end;
54 inc(l);
55 end;
56 if sht[l]=0 then
57 writeln('Wrong');
58 end;
60 begin
61 readln(r,c);
62 for i:=1 to c do
63 begin
64 readln(num[i,1],num[i,2]);
65 inc(cnt[num[i,1]]);
66 inc(cnt[num[i,2]]);
67 end;
68 draw;
69 if fail then writeln('NO')
70 else for i:=1 to c do write(sht[i],' ');
71 end.