9. NOIP2003
田劲锋
神经网络
问题描述
输入输出
问题分析
我的题解
侦探推理
加分二叉树
传染病控制
总结
【我的题解】
1 program sjwl ;
2 var i , j , n , p ,m: word ;
3 a , x , y ,w, c , u : array [ 1 . . 2 0 0 ] of word ;
4 no : boolean ;
5 begin
6 assign ( input , 'sjwl.in') ; reset ( input ) ;
7 assign ( output , 'sjwl.out') ; rewrite ( output ) ;
8 readln (n , p) ;
9 for i :=1 to n do readln ( c [ i ] , u [ i ] ) ;
10 f i l l c h a r (a , s i z e o f (a) ,0) ;
11 for i :=1 to p do
12 begin
13 readln (x [ i ] , y [ i ] ,w[ i ] ) ;
14 //读入起点 x、终点 y、权值 w
15 a [ y [ i ]]:= a [ x [ i ]]+1;
16 //终点层数(比起点大 1)
17 end;
18 m:=a [ y [ p ] ] ; //求最大层数,即输出层的层数
10. NOIP2003
田劲锋
神经网络
侦探推理
问题描述
输入输出
问题分析
我的题解
加分二叉树
传染病控制
总结
19 for i :=1 to n do i f a [ i ]>0 then
20 begin
21 for j :=1 to p do
22 //Ci =
∑
(j,i)∈E WjiCj − Ui
23 i f (y [ j ]= i )and( c [ x [ j ]] >0)
24 then c [ i ]:= c [ i ]+w[ j ]* c [ x [ j ] ] ;
25 c [ i ]:= c [ i ]−u [ i ] ; //Ci − Ui
26 end;
27 no:=true ; //输出
28 for i :=1 to n do
29 i f (a [ i ]=m)and( c [ i ]>0) then
30 begin
31 writeln ( i , '␣' , c [ i ] ) ;
32 no:= false ;
33 end;
34 i f no then writeln ('NULL') ;
35 close ( input ) ; close ( output ) ;
36 end.
20. NOIP2003
田劲锋
神经网络
侦探推理
问题描述
输入输出
问题分析
我的题解
加分二叉树
传染病控制
总结
【我的题解】
1 program l o g i c ;
2 const maxm=20;
3 dow: array [ 1 . . 7 ] of string=('Sunday.' , 'Monday.
' , 'Tuesday.' , 'Wednesday.' , 'Thursday.' , '
Friday.' , 'Saturday.') ;
4 var i , j , k , weekday ,m, n , p , p1 , p2 , p3 , index , rs , sum1
, sum2 : byte ;
5 name : array [ 1 . .maxm] of string ;
6 {人名}
7 pep10 , pep20 : array [ 1 . . 1 0 0 ] of byte ;
8 {说话人的序号, 分为两类, 前者存放不含星期的证词的说话人
的序号, 后者存放只含星期的证词的说话人的序号}
9 pep1 , pep2 : array [ 1 . . 1 0 0 ] of string ;
10 {证词, 分为两类, 第一类是不含星期的证词, 第二类是只含星
期的证词}
11 name0 , tmp, tmp0 , tmp1 , tmp2 : string ;
12 t , t0 : array [ 1 . .maxm] of byte ;
13 {诚信记录, 无记录 0, 真为 1, 假为 2, 自相矛盾 3}
14 f l a g : boolean ;
21. NOIP2003
田劲锋
神经网络
侦探推理
问题描述
输入输出
问题分析
我的题解
加分二叉树
传染病控制
总结
15
16 procedure pre ; {预处理过程}
17 begin
18 sum1:=0; sum2:=0;
19 for i :=1 to p do
20 begin
21 readln (tmp) ;
22 index:=pos ( ':␣' ,tmp) ;
23 tmp1:=copy (tmp,1 , index −1) ;
24 {取得说话人姓名}
25 tmp2:=copy (tmp, index+2, length (tmp)−index
−1) ; {取得证
词}
26 i f (tmp2='I␣am␣guilty.') or (tmp2='I␣am␣
not␣guilty.') then
27 for j :=1 to m do i f name [ j ]=tmp1 then
28 begin
29 inc (sum1) ;
30 {sum1 表示第一类证词的总数}
31 pep10 [ sum1]:= j ;
32 {记下第一类第 sum1 条证词的说话人的序号}
22. NOIP2003
田劲锋
神经网络
侦探推理
问题描述
输入输出
问题分析
我的题解
加分二叉树
传染病控制
总结
33 pep1 [ sum1]:=tmp2 ;
34 {记下第一类第 sum1 条证词}
35 break ;
36 end;
37 i f ( pos ( '␣is␣guilty.' ,tmp2)>0) or ( pos ( '␣
is␣not␣guilty.' ,tmp2)>0) then
38 begin
39 tmp0:=copy (tmp2 ,1 , pos ( '␣is␣' ,tmp2)−1) ;
40 {取得证词的主语}
41 f l a g := false ;
42 for k:=1 to m do i f tmp0=name [ k ] then
43 begin
44 f l a g :=true ;
45 break ;
46 end;
47 i f f l a g then
48 {如果证词的主语确实存在}
49 for j :=1 to m do
50 i f name [ j ]=tmp1 then
51 begin{记入到第一类证词中}
52 inc (sum1) ;
23. NOIP2003
田劲锋
神经网络
侦探推理
问题描述
输入输出
问题分析
我的题解
加分二叉树
传染病控制
总结
53 pep10 [ sum1]:= j ;
54 pep1 [ sum1]:=tmp2 ;
55 break ;
56 end;
57 end;
58 f l a g := false ;
59 for j :=1 to 7 do
60 i f tmp2='Today␣is␣'+ dow[ j ] then
61 begin
62 f l a g :=true ;
63 break ;
64 end;
65 i f f l a g then
66 {如果证词是关于星期的判断}
67 for j :=1 to m do
68 i f name [ j ]=tmp1 then
69 begin{记入到第二类证词中}
70 inc (sum2) ;
71 {sum2 表示第二类证词的总数}
72 pep20 [ sum2]:= j ;
73 {记下第二类第 sum2 条证词的说话人的序号}
24. NOIP2003
田劲锋
神经网络
侦探推理
问题描述
输入输出
问题分析
我的题解
加分二叉树
传染病控制
总结
74 pep2 [ sum2]:=tmp2 ;
75 {记下第二类第 sum2 条证词}
76 break ;
77 end;
78 end;
79 end;
80
81 procedure find ; {判断过程}
82 begin
83 for j :=1 to sum1 do{第一类证词}
84 begin
85 i f pep1 [ j ]='I␣am␣guilty.' then
86 begin
87 i f i=pep10 [ j ] then
88 {如果说话人就是罪犯, 则本证词为真}
89 case t [ i ] of
90 0: t [ i ]:=1;
91 {如果此人还没说话, 则真话}
92 2: t [ i ]:=3;
93 {如果此人说过假话, 则自相矛盾}
94 end
25. NOIP2003
田劲锋
神经网络
侦探推理
问题描述
输入输出
问题分析
我的题解
加分二叉树
传染病控制
总结
95 else
96 {如果说话人不是罪犯, 则本证词为假}
97 case t [ pep10 [ j ] ] of
98 0: t [ pep10 [ j ] ] : = 2 ;
99 {如果此人还没说话, 则假话}
100 1: t [ pep10 [ j ] ] : = 3 ;
101 {如果此人说过真话, 则自相矛盾}
102 end;
103 end;
104 i f pep1 [ j ]='I␣am␣not␣guilty.' then
105 begin
106 i f i=pep10 [ j ] then
107 {如果说话人是罪犯, 则证词为假}
108 case t [ i ] of
109 0: t [ i ]:=2;
110 1: t [ i ]:=3;
111 end
112 else
113 {如果说话人不是罪犯, 则证词为真}
114 case t [ pep10 [ j ] ] of
115 0: t [ pep10 [ j ] ] : = 1 ;
26. NOIP2003
田劲锋
神经网络
侦探推理
问题描述
输入输出
问题分析
我的题解
加分二叉树
传染病控制
总结
116 2: t [ pep10 [ j ] ] : = 3 ;
117 end;
118 end;
119 i f ( pos ( '␣is␣guilty.' , pep1 [ j ] ) >0) then
120 begin
121 tmp:=copy ( pep1 [ j ] ,1 , pos ( '␣is␣guilty.' ,
pep1 [ j ] ) −1) ;
122 {取得证词的主语}
123 i f name [ i ]=tmp then
124 {如果证词的主语是罪犯, 则本证词为真}
125 case t [ pep10 [ j ] ] of
126 0: t [ pep10 [ j ] ] : = 1 ;
127 2: t [ pep10 [ j ] ] : = 3 ;
128 end
129 else
130 {如果证词的主语不是罪犯, 则本证词为假}
131 case t [ pep10 [ j ] ] of
132 0: t [ pep10 [ j ] ] : = 2 ;
133 1: t [ pep10 [ j ] ] : = 3 ;
134 end;
135 end;
27. NOIP2003
田劲锋
神经网络
侦探推理
问题描述
输入输出
问题分析
我的题解
加分二叉树
传染病控制
总结
136 i f ( pos ( '␣is␣not␣guilty.' , pep1 [ j ] ) >0) then
137 begin
138 tmp:=copy ( pep1 [ j ] ,1 , pos ( '␣is␣not␣guilty.
' , pep1 [ j ] ) −1) ;
139 {取得证词的主语}
140 i f name [ i ]=tmp then
141 {如果证词的主语是罪犯, 则本证词为假}
142 case t [ pep10 [ j ] ] of
143 0: t [ pep10 [ j ] ] : = 2 ;
144 1: t [ pep10 [ j ] ] : = 3 ;
145 end
146 else
147 {如果证词的主语不是罪犯, 则本证词为真}
148 case t [ pep10 [ j ] ] of
149 0: t [ pep10 [ j ] ] : = 1 ;
150 2: t [ pep10 [ j ] ] : = 3 ;
151 end;
152 end;
153 end;
154
155 i f sum2>0 then{第二类证词}
28. NOIP2003
田劲锋
神经网络
侦探推理
问题描述
输入输出
问题分析
我的题解
加分二叉树
传染病控制
总结
156 begin
157 for k:=1 to m do t0 [ k]:= t [ k ] ;
158 {记下第一类证词全部处理完毕后的诚信记录}
159 for weekday:=1 to 7 do
160 begin{穷举, 今天是星期日, 星期一直到星期六}
161 for k:=1 to m do t [ k]:= t0 [ k ] ;
162 {诚信记录还原为第一类证词全部处理完毕后的诚信记
录}
163 for j :=1 to sum2 do
164 {逐条处理第二类证词}
165 i f pos (dow[ weekday ] , pep2 [ j ] )>0 then
166 {如果证词中含有当前穷举的星期值, 则本证词为真}
167 case t [ pep20 [ j ] ] of
168 0: t [ pep20 [ j ] ] : = 1 ;
169 2: t [ pep20 [ j ] ] : = 3 ;
170 end
171 else
172 {如果证词中不含有当前穷举的星期值, 则本证词为假}
173 case t [ pep20 [ j ] ] of
174 0: t [ pep20 [ j ] ] : = 2 ;
175 1: t [ pep20 [ j ] ] : = 3 ;
29. NOIP2003
田劲锋
神经网络
侦探推理
问题描述
输入输出
问题分析
我的题解
加分二叉树
传染病控制
总结
176 end;
177 p1:=0;p2:=0;p3:=0;
178 for k:=1 to m do i f t [ k]=1 then inc (p1) ;
179 {p1 表示始终说真话的人的总数}
180 for k:=1 to m do i f t [ k]=2 then inc (p2) ;
181 {p2 表示始终说假话的人的总数}
182 for k:=1 to m do i f t [ k]=3 then inc (p3) ;
183 {p3 表示说过自相矛盾的话的人的总数}
184 i f (p1<=m−n) and (p2<=n) and (p3=0) then
185 begin
186 {如果说真话的人的总数小于等于 m-n 且说假话的人的
总数小于等于 n 且没有人说过自相矛盾的话, 那么
当前罪犯 i 就是本题的一个解}
187 name0:=name [ i ] ;
188 {记下罪犯的姓名}
189 inc ( rs ) ;
190 {解的个数增 1}
191 break ;
192 {退出星期的穷举}
193 end;
194 end; {星期的穷举完毕}
30. NOIP2003
田劲锋
神经网络
侦探推理
问题描述
输入输出
问题分析
我的题解
加分二叉树
传染病控制
总结
195 end; {第二类证词处理完毕}
196 end;
197
198 begin
199 assign ( input , 'logic.in') ; reset ( input ) ;
200 assign ( output , 'logic.out') ; rewrite ( output ) ;
201 readln (m, n , p) ;
202 for i :=1 to m do readln (name [ i ] ) ;
203 pre ; {调用预处理过程}
204 rs :=0;{rs 表示解的个数}
205 for i :=1 to m do
206 begin{穷举, 第 i 个人为罪犯}
207 i f rs >1 then break ;
208 {如果解的个数多于 1 个, 则跳出循环}
209 f i l l c h a r ( t , s i z e o f ( t ) ,0) ;
210 {诚信记录赋初值为 0, 表示此人尚无有效证词}
211 find ; {调用判断过程}
212 p1:=0; p2:=0; p3:=0;
213 for k:=1 to m do i f t [ k]=1 then inc (p1) ;
214 for k:=1 to m do i f t [ k]=2 then inc (p2) ;
215 for k:=1 to m do i f t [ k]=3 then inc (p3) ;
31. NOIP2003
田劲锋
神经网络
侦探推理
加分二叉树
问题描述
输入输出
问题分析
我的题解
传染病控制
总结
216 i f (p1<=m−n) and (p2<=n) and (p3=0) and (
name0<>name [ i ] ) then
217 begin
218 {为避免重复计解, 此处多加了一个条件:
name0<>name[i]}
219 name0:=name [ i ] ;
220 inc ( rs ) ;
221 end;
222 end;
223 i f rs=1 then writeln (name0) ;
224 {只有一个解}
225 i f rs=0 then writeln ('Impossible') ;
226 {无解}
227 i f rs >1 then writeln ('Cannot␣Determine') ;
228 {多个可能解}
229 close ( input ) ; close ( output ) ;
230 end.
37. NOIP2003
田劲锋
神经网络
侦探推理
加分二叉树
问题描述
输入输出
问题分析
我的题解
传染病控制
总结
【我的题解】
1 program j f e c s ;
2 const maxn=30;
3 var n , i , j , k , p : integer ;
4 r : array [ 0 . . maxn , 0 . . maxn] of integer ;
5 f : array [ 0 . . maxn , 0 . . maxn] of longword ;
6 f i r s t : boolean ;
7
8 procedure print ( i , j : integer ) ;
9 var k : integer ;
10 begin
11 k:=r [ i , j ] ;
12 i f k<>0 then
13 begin{前序遍历输出}
14 i f f i r s t then
15 begin write (k) ; f i r s t := false ; end
16 else write ('␣' ,k) ;
17 print ( i , k−1) ;
18 print (k+1, j ) ;
19 end;
38. NOIP2003
田劲锋
神经网络
侦探推理
加分二叉树
问题描述
输入输出
问题分析
我的题解
传染病控制
总结
20 end;
21
22 begin
23 assign ( input , 'jfecs.in') ; reset ( input ) ;
24 assign ( output , 'jfecs.out') ; rewrite ( output ) ;
25 readln (n) ;
26 for i :=0 to n do{初始化}
27 for j :=0 to n do
28 begin
29 r [ i , j ]:=0;
30 f [ i , j ]:=1;
31 end;
32 for i :=1 to n do{读入}
33 begin
34 read( f [ i , i ] ) ;
35 r [ i , i ]:= i ;
36 end;
37 for k:=1 to n−1 do{动态规划}
38 for i :=1 to n−k do
39 begin
40 j := i+k ;
39. NOIP2003
田劲锋
神经网络
侦探推理
加分二叉树
传染病控制
问题描述
输入输出
问题分析
我的题解
总结
41 for p:= i to j do
42 i f f [ i , j ]< f [ i , p−1]* f [ p+1, j ]+ f [ p , p ]
then
43 begin
44 f [ i , j ]:= f [ i , p−1]* f [ p+1, j ]+ f [ p , p ] ;
45 r [ i , j ]:=p ;
46 end;
47 end;
48 writeln ( f [1 , n ] ) ; {最大加分}
49 f i r s t :=true ;
50 print (1 ,n) ; {前序遍历输出}
51 writeln ;
52 close ( input ) ; close ( output ) ;
53 end.
45. NOIP2003
田劲锋
神经网络
侦探推理
加分二叉树
传染病控制
问题描述
输入输出
问题分析
我的题解
总结
【我的题解】
1 program epidemic ;
2 const maxn=300;maxp=300;
3 type node=array [ 0 . . maxp] of integer ;
4 {节点数据类型是一维数组,其中下标为 0 的元素中存放该节点
的孩子节点个数,下标为 1 的元素中存放该节点的第 1 个
孩子的节点序号,下标为 i 的元素中存放该节点的第 i 个孩
子的节点序号}
5 var i , n , p , min ,max, s , ans : integer ;
6 a : array [ 1 . . maxn] of ^node ;
7 {存放 n 个节点的数据,使用常规数组容量是不够的,故采用动
态数组}
8
9 procedure swap(var x , y : integer ) ;
10 var tmp: integer ;
11 begin
12 tmp:=x ;
13 x:=y ;
14 y:=tmp;
15 end;
16
46. NOIP2003
田劲锋
神经网络
侦探推理
加分二叉树
传染病控制
问题描述
输入输出
问题分析
我的题解
总结
17 procedure find ( i : integer ) ;
18 {求以 i 为根节点的树中被感染人数的最少值}
19 var root1 , root2 , j , k ,m, tmp, s0 : integer ;
20 b : node ;
21 f l a g : boolean ;
22 begin
23 i f a [ i ]^[0] <=1 then
24 begin
25 i f s<ans then ans:=s ;
26 exit ;
27 end;
28 s0:=s ; {记下上一层递归完后的感染人数}
29 f l a g :=true ; {逻辑标志}
30 for j :=1 to a [ i ] ^ [ 0 ] do
31 i f (a [ a [ i ] ^ [ j ]]^[0] >0) then
32 begin
33 {依次切断根节点 i 的第 j 个孩子,这里进行了优化,如果
根节点 i 的第 j 个孩子是叶子节点则暂不考虑}
34 f l a g := false ;
35 s:=s0+a [ i ]^[0] −1;
36 {切断 j 的同时,被感染的人数增加了 a[i][̂0]-1 个}
47. NOIP2003
田劲锋
神经网络
侦探推理
加分二叉树
传染病控制
问题描述
输入输出
问题分析
我的题解
总结
37 i f j=1 then root1 :=2 else root1 :=1;
38 {选根节点 i 的第 root1 个孩子为新树的根节点}
39 root2:=a [ i ] ^ [ root1 ] ;
40 {求新树的根节点的序号}
41 tmp:=a [ root2 ] ^ [ 0 ] ;
42 {求新树的根节点的孩子数}
43 for k:=1 to tmp do b [ k]:=a [ root2 ] ^ [ k ] ;
44 {记下合并前新树的根节点的孩子情况}
45 for k:=1 to a [ i ] ^ [ 0 ] do
46 {开始合并生成新的树}
47 i f (k<>j )and(k<>root1 ) then
48 begin
49 {如果不是刚被切断的子树或被选作新树根节点的子树}
50 for m:=1 to a [ a [ i ] ^ [ k ] ] ^ [ 0 ] do
51 {将它们并入新树}
52 a [ root2 ] ^ [ a [ root2 ]^[0]+m]:= a [ a [ i ] ^ [ k
] ] ^ [m] ;
53 a [ root2 ]^[0]:= a [ root2 ]^[0]+ a [ a [ i ] ^ [ k
] ] ^ [ 0 ] ;
54 {新树根节点的孩子数也随着增加}
55 end;
48. NOIP2003
田劲锋
神经网络
侦探推理
加分二叉树
传染病控制
问题描述
输入输出
问题分析
我的题解
总结
56 find ( root2 ) ;
57 {对新树进行递归运算}
58 a [ root2 ]^[0]:=tmp ;
59 {节点 root2 的孩子数还原}
60 for m:=1 to tmp do a [ root2 ] ^ [m]:=b [m] ;
61 {节点 root2 的孩子情况数据还原}
62 end;
63 i f f l a g then
64 begin
65 {如果根节点 i 的所有孩子都是叶子节点}
66 s:=s0+a [ i ]^[0] −1;
67 {则切断任何一个都是等效的,故感染人数为 s0+a[i][̂0]-1}
68 i f s<ans then ans:=s ;
69 {如果此轮递归得到的感染人数最少,则刷新最少感染人
数}
70 exit ;
71 end;
72 end;
73
74 begin
75 assign ( input , 'epidemic.in') ; reset ( input ) ;
49. NOIP2003
田劲锋
神经网络
侦探推理
加分二叉树
传染病控制
问题描述
输入输出
问题分析
我的题解
总结
76 assign ( output , 'epidemic.out') ; rewrite (
output ) ;
77 readln (n , p) ;
78 for i :=1 to n do new(a [ i ] ) ;
79 for i :=1 to n do a [ i ] ^ [ 0 ] : = 0 ;
80 for i :=1 to p do
81 begin
82 readln (min ,max) ;
83 i f min>max then swap(min ,max) ;
84 inc (a [ min ] ^ [ 0 ] ) ;
85 a [ min ] ^ [ a [ min ] ^ [ 0 ] ] : =max;
86 {max 成为根节点 min 的第 a[min][̂0] 个孩子}
87 end;
88 s :=1; ans :=300;
89 find (1) ;
90 writeln ( ans ) ;
91 close ( input ) ; close ( output ) ;
92 end.
52. NOIP2003
田劲锋
神经网络
侦探推理
加分二叉树
传染病控制
问题描述
输入输出
问题分析
我的题解
总结
21 node *f ,* l ,* storer ,* s f ;
22 t a d j l ()
23 {
24 f=l =0;
25 }
26 void ins ( int p)
27 {
28 i f ( f )
29 l=l−>next=new node (p) ;
30 else
31 f=l=new node (p) ;
32 }
33 void store ()
34 {
35 storer=l ;
36 s f=f ;
37 }
38 void restore ()
39 {
40 node *p ,* q ;
41 i f ( storer )
53. NOIP2003
田劲锋
神经网络
侦探推理
加分二叉树
传染病控制
问题描述
输入输出
问题分析
我的题解
总结
42 for (p=storer −>next ; p ; p=q)
43 {
44 q=p−>next ;
45 delete p ;
46 }
47 l=storer ;
48 f=s f ;
49 i f ( l )
50 l−>next=0;
51 }
52 void cp ( t a d j l &T)
53 {
54 node *k ;
55 for (k=T. f ; k ; k=k−>next )
56 {
57 ins (k−>p) ;
58 }
59 }
60 };
61
62 int N,P, ans=0x7FFFFFFF;
54. NOIP2003
田劲锋
神经网络
侦探推理
加分二叉树
传染病控制
问题描述
输入输出
问题分析
我的题解
总结
63 t a d j l adjl [MAX] ;
64
65 void i n i t ()
66 {
67 int i , a , b , c ;
68 freopen ("epidemic.in" ,"r" , stdin ) ;
69 freopen ("epidemic.out" ,"w" , stdout ) ;
70 cin >> N >> P;
71 for ( i =1; i<=P; i++)
72 {
73 cin >> a >> b ;
74 i f (a>b)
75 {
76 c=a ; a=b ; b=c ;
77 }
78 adjl [ a ] . ins (b) ;
79 }
80 }
81
82 void dfs ( int i , int T)
83 {
55. NOIP2003
田劲锋
神经网络
侦探推理
加分二叉树
传染病控制
问题描述
输入输出
问题分析
我的题解
总结
84 i f (T>=ans )
85 return ;
86 i f ( ! adjl [ i ] . f )
87 {
88 i f (T<ans )
89 ans=T;
90 }
91 int j , q , newer=0;
92 node *k ,* l ,*w;
93 bool a l l l e a f=true ;
94 // optimize
95 for (k=adjl [ i ] . f ; k ; k=k−>next )
96 {
97 j=k−>p ;
98 i f ( adjl [ j ] . f )
99 {
100 a l l l e a f=false ;
101 break ;
102 }
103 newer++;
104 }
56. NOIP2003
田劲锋
神经网络
侦探推理
加分二叉树
传染病控制
问题描述
输入输出
问题分析
我的题解
总结
105 i f ( a l l l e a f )
106 {
107 T+=newer −1;
108 i f (T<ans )
109 ans=T;
110 return ;
111 }
112
113 for (k=adjl [ i ] . f ; k ; k=k−>next )
114 {
115 j=k−>p ; //cut ( i , j )
116 i f ( ! adjl [ j ] . f )
117 continue ;
118 w=0;
119 q=0;
120 for ( l=adjl [ i ] . f ; l ; l=l−>next )
121 {
122 i f ( l==k) continue ;
123 i f ( !w)
124 {
125 w=l ;