zoukankan      html  css  js  c++  java
  • bzoj1615 [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机

    感觉自己像个智障

    直接bfs

    然而读入没判负号查了半小时。。

     1 #include<cstdio>
     2 #include<cctype>
     3 #include<cmath>
     4 #include<cstring>
     5 #include<algorithm>
     6 using namespace std;
     7 #define maxn 1100
     8 #define eps 1e-8
     9 int n,tx,ty;
    10 int st,ed;
    11 int x[maxn],y[maxn],r[maxn];
    12 double v[maxn],ans;
    13 bool vis[maxn];
    14 int q[maxn*5];
    15 int fa[maxn];
    16 inline int read(){
    17     int x=0,f=1;char ch=getchar();
    18     while (!isdigit(ch)) {
    19         if (ch=='-') f=-1;
    20         ch=getchar();
    21     }
    22     while (isdigit(ch)) {
    23         x=x*10+ch-'0';
    24         ch=getchar(); 
    25     }
    26     return x*f;
    27 }
    28 inline bool ok(int i,int j){
    29     double dis=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);
    30     double d2=r[i]+r[j];
    31     if (dis==d2*d2) return 1;
    32     else return 0;
    33 } 
    34 inline void bfs(){
    35     int head=0,tail=1;
    36     q[head]=st;v[st]=10000;vis[st]=1;
    37     while (head<tail){
    38         int now=q[head];head++;
    39         for (int i=1;i<=n;i++){
    40             if (!vis[i]&&ok(now,i)){
    41                 vis[i]=1,q[tail++]=i;
    42                 fa[i]=now;
    43                 v[i]=v[now]/r[i]*r[now];
    44                 if (i==ed) return;
    45              }
    46         }
    47     
    48     }
    49 }
    50 int main(){
    51     n=read(),tx=read(),ty=read();
    52     for (int i=1;i<=n;i++){
    53         x[i]=read(),y[i]=read(),r[i]=read();
    54         if (x[i]==0&&y[i]==0) st=i;
    55         if (x[i]==tx&&y[i]==ty) ed=i;
    56     }
    57     memset(v,0,sizeof(v));
    58     memset(vis,0,sizeof(vis));
    59     memset(q,0,sizeof(q));
    60     memset(fa,0,sizeof(fa));
    61     bfs();
    62     ans=0;
    63     for (int i=ed;i;i=fa[i])
    64       ans+=v[i];
    65     printf("%d
    ",(int)ans);
    66     return 0;
    67 }
    View Code
  • 相关阅读:
    git简单使用
    Kafka初入门简单配置与使用
    Hbase简单配置与使用
    Oozie简单配置与使用
    Flume初入门简单配置与使用
    sqoop简单配置与使用
    Android基础系列合集
    Java 基础系列合集
    TCP 和 UDP 区别
    http get和post区别
  • 原文地址:https://www.cnblogs.com/vincent-hwh/p/7497901.html
Copyright © 2011-2022 走看看