设为首页 加入收藏

TOP

计算气球半径让其不相交(三)
2013-12-12 14:36:47 来源: 作者: 【 】 浏览:534
Tags:计算 气球 半径 相交

 

    void tarjan(int now){

    dfn[now] = low[now] = ++ dp ;

    st[top ++] = now ;

    inst[now] = 1 ;

    for (int i = head[now] ; ~i ; i = ed[i].next ){

    int e = ed[i].e ;

    if(!dfn[e]){

    tarjan(e) ;

    low[now] = min(low[now] , low[e]) ;

    }

    else if(inst[e]){

    low[now] = min(low[now] , dfn[e]) ;

    }

    }

    if(low[now] == dfn[now]){

    ca ++ ;

    int xx ;

    do{

    xx = st[-- top] ;

    belong[xx] = ca ;

    inst[xx] = 0 ;

    }while(xx != now) ;

    }

    }

    int doit(){

    for (int i = 0 ; i < n 《 1 ; i ++ )if(!dfn[i])tarjan(i) ;

    for (int i = 0 ; i < n ; i ++ )if(belong[LL(i)] == belong[RR(i)])return 0 ;

    return 1 ;

    }

    int main() {

    while(cin 》 n ){

    for (int i = 0 ; i < n ; i ++ ){

    cin 》 x[LL(i)] 》 y[LL(i)] ;

    cin 》 x[RR(i)] 》 y[RR(i)] ;

    }

    double l = 0 , r = 30000 ,mid ;

    while(r - l > 1e-4){

    mid = (l + r) / 2 ;

    build(mid) ;

    if(doit())l = mid ;

    else r = mid ;

    }

    printf("%.2f\n",mid / 2) ;

    }

    return 0 ;

    }

        

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 3/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇一道DP练习题详解 下一篇排序生成最小的数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Libevent C++ 高并发 (2025-12-26 00:49:30)
·C++ dll 设计接口时 (2025-12-26 00:49:28)
·透彻理解 C 语言指针 (2025-12-26 00:22:52)
·C语言指针详解 (经典 (2025-12-26 00:22:49)
·C 指针 | 菜鸟教程 (2025-12-26 00:22:46)