ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

BZOJ 4602: [Sdoi2016]齿轮

2020-01-30 17:57:48  阅读:226  来源: 互联网

标签:const int void EPS Sdoi2016 include 4602 RI BZOJ


超级SB题,写题解纯粹是为了水博客,刚开始WA了一发因为又被题意杀了,我以为不连通就不能同时转(脑洞清奇)

首先我们容易想到先给原图同一颗生成树出来(不连通的话就是森林),然后假定某个点转\(1\)圈,顺带求出其它每个点转的圈数

然后再枚举非生成树边,判断是否可行即可,注意精度要用EPS判断

PS:本来对于乘除法的精度问题应该取对数变加减法的,然后这里数据范围小懒了随便写了一发就过了233

#include<cstdio>
#include<cmath>
#define RI register int
#define CI const int&
using namespace std;
const int N=1005,M=10005;
const double EPS=1e-6;
struct edge
{
    int fr,to,nxt,x,y;
}e[M<<1]; int t,cases,head[N],cnt,n,m,u,v,x,y,q[N]; double r[N]; bool vis[N],use[M];
inline void addedge(CI u,CI v,CI x,CI y)
{
    e[++cnt]=(edge){u,v,head[u],x,y}; head[u]=cnt;
}
#define to e[i].to
inline void BFS(CI st)
{
    RI H=0,T=1; r[q[1]=st]=1.0; vis[st]=1; while (H<T)
    {
        int now=q[++H]; for (RI i=head[now];i;i=e[i].nxt)
        if (!vis[to]) r[to]=r[now]*e[i].x/e[i].y,vis[to]=use[i+1>>1]=1,q[++T]=to;
    }
}
#undef to
inline void clear(void)
{
    RI i; for (i=1;i<=n;++i) head[i]=vis[i]=0; 
    for (cnt=0,i=1;i<=m;++i) use[i]=0;
}
int main()
{
    for (scanf("%d",&t),cases=1;cases<=t;++cases)
    {
        RI i; for (scanf("%d%d",&n,&m),i=1;i<=m;++i)
        scanf("%d%d%d%d",&u,&v,&x,&y),addedge(u,v,x,y),addedge(v,u,y,x);
        for (i=1;i<=n;++i) if (!vis[i]) BFS(i); bool flag=1;
        for (i=1;i<=m;++i) if (!use[i])
        if (fabs(r[e[i<<1].fr]*e[i<<1].x-r[e[i<<1].to]*e[i<<1].y)>=EPS)
        { flag=0; break; } if (flag) printf("Case #%d: Yes\n",cases);
        else printf("Case #%d: No\n",cases); clear();
    }
}

标签:const,int,void,EPS,Sdoi2016,include,4602,RI,BZOJ
来源: https://www.cnblogs.com/cjjsb/p/12243254.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有