Advertisement
saske_7

gopher2.cpp

Nov 15th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.91 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std ;
  4.  
  5. #define M 500000
  6. #define pii pair<int , int >
  7. #define mp make_pair
  8. #define pf printf
  9. #define sf scanf
  10. #define sf1(a ) scanf("%d",&a)
  11. #define pb push_back
  12. #define sf2(a, b) scanf("%d%d",&a ,&b)
  13. #define rep(i,n) for(i = 0 ; i< n ;i++ )
  14.  
  15. struct _node{
  16. double x, y;
  17. int vis;
  18.  
  19. };
  20.  
  21.  
  22. struct _gnode{
  23. double x, y;
  24.  
  25. };
  26.  
  27. struct _edge{
  28. int u  ;
  29. double dis;
  30.  
  31. };
  32. vector<_node> node;
  33. vector<_gnode> gnode;
  34. vector<_edge> edge;
  35.  
  36. bool comp(_edge p , _edge q){
  37. return p.dis < q.dis;
  38. }
  39.  
  40. int make(int _u , double vs , double s  ){
  41. int ret ;
  42. int i ,j ,k ;
  43. edge.clear();
  44.     for(i = 0 ; i< node.size() ;i++)
  45.     {
  46.       if(node[i].vis != -1){
  47.       _edge v ;
  48.       v.dis = sqrt((node[i].x-gnode[_u].x)*(node[i].x-gnode[_u].x)
  49.             +(node[i].y-gnode[_u].y)*(node[i].y-gnode[_u].y));
  50.       v.u =  i ;
  51.       edge.push_back(v);
  52.       }
  53.     }
  54. int flag = 0 ;
  55.   sort(edge.begin() , edge.end() , comp);
  56.   for(i = 0 ;i < edge.size() ; i++)
  57.   {
  58.     double time ;
  59.     time  =(double)edge[i].dis/ vs;
  60.     if(time  < s || (time- s<= .0000001 && s- time <= .0000001) ){
  61.       flag =  1;
  62.       node[edge[i].u].vis = -1 ;
  63.       break;
  64.     }
  65.   }
  66.  
  67. if(flag == 0) ret = 1;
  68. else ret =  0;
  69. return ret ;
  70. }
  71. int main(){
  72.  
  73. // freopen("in.txt","r",stdin);
  74.   // freopen("out.txt","w",stdout);
  75.  
  76. int n , m ,s , v ;
  77.   while(scanf("%d%d%d%d",&n,&m,&s,&v)==  4){
  78.   gnode.clear();
  79.   node.clear();
  80.    edge.clear();
  81.  
  82.   while(n--){
  83.     _gnode v ;
  84.     double _x , _y;
  85.     scanf("%lf%lf",&_x, &_y);
  86.     v.x =  _x;
  87.     v.y =  _y;
  88.     gnode.push_back(v );
  89.  
  90.   }
  91.     while(m--){
  92.       _node v ;
  93.     double _x , _y ;
  94.     scanf("%lf%lf",&_x ,&_y);
  95.     v.x  =  _x ;
  96.     v.y =  _y;
  97.     v.vis = 1;
  98.     node.push_back(v );
  99.  
  100.     }
  101.  
  102.   int i, j,k = 0 ;
  103.     for(i = 0 ;i< gnode.size() ; i++){
  104.         k += make(i , s,v);
  105.  
  106.     }
  107. printf("%d\n",k);
  108.   }
  109. return 0 ;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement