记录编号 31646 评测结果 AWWWWWWWW
题目名称 [USACO Mar08] 麻烦的干草打包机 最终得分 16
用户昵称 Gravatar王者自由 是否通过 未通过
代码语言 Pascal 运行时间 0.034 s
提交时间 2011-11-03 11:57:22 内存使用 0.22 MiB
显示代码纯文本
  1. program The_Loathsome_Hay_Baler ;
  2. const maxn = 2000 ;
  3. type geartype= record x , y , r : longint ; end ;
  4. queuetype = record d , pre : longint ; end ;
  5. var q : array[1..maxn] of queuetype ;
  6. gear : array[1..maxn] of geartype ;
  7. data : array[1..maxn] of double ;
  8. b : array[1..maxn] of boolean ;
  9. ans : double ;
  10. head , tail , i, n , xt , yt , num , driver : longint ;
  11. begin
  12. assign( input , 'baler.in' ) ; reset( input ) ;
  13. assign( output , 'baler.out' ) ; rewrite( output ) ;
  14. readln( n , xt , yt ) ;
  15. fillchar( b , sizeof( b ) , 0 ) ;
  16. for i := 1 to n do begin
  17. readln( gear[i].x , gear[i].y , gear[i].r ) ;
  18. if ( gear[i].x = xt ) and ( gear[i].y = yt )
  19. then num := i ;
  20. if ( gear[i].x = 0 ) and ( gear[i].y = 0 )
  21. then driver := i ;
  22. end ;
  23. head := 0 ; tail := 1 ; ans := 0 ;
  24. q[1].d := driver ; q[1].pre := 0 ; b[driver] := true ; data[driver] := 10000 ;
  25. repeat
  26. inc( head ) ;
  27. for i := 1 to n do
  28. if not b[i] and
  29. ( sqr( gear[q[head].d].x - gear[i].x ) + sqr( gear[q[head].d].y - gear[i].y ) = sqr( gear[q[head].d].r + gear[i].r ) )
  30. then begin
  31. b[i] := true ;
  32. inc( tail ) ;
  33. q[tail].d := i ;
  34. q[tail].pre := head ;
  35. data[i] := data[q[head].d] * gear[q[head].d].r / gear[i].r ;
  36. if i = num
  37. then break ;
  38. end ;
  39. until ( head >= tail ) or b[num] ;
  40. if not b[num]
  41. then writeln(0)
  42. else begin
  43. i := tail ;
  44. while i <> 0 do begin
  45. ans := ans + data[q[i].d] ;
  46. i := q[i].pre ;
  47. end ;
  48. writeln(ans:0:0) ;
  49. end ;
  50. close( input ) ; close( output ) ;
  51. end .