zoukankan      html  css  js  c++  java
  • 【bzoj4602】[Sdoi2016]齿轮

    dfs,连边,边权为比值,赋值搜索,遇到矛盾时退出

    #include<algorithm>
    #include<iostream>
    #include<cstdlib>
    #include<cstring>
    #include<cstdio>
    #include<cmath>
    using namespace std;
     
    typedef long long LL;
    typedef double DB;
     
    #define eps 1e-8
    #define M 10010
    #define N 1010
     
    struct edge
    {
        int to,next;
        DB a;
    }e[M<<1];
    int head[M<<1];
    int cnt;
     
    int T,n,m;
    int yjy;
     
    int x,y,u,v;
    int p[N<<1];
     
    DB f[M<<1];
     
    void link(int u,int v,DB x)
    {
        e[++cnt]=(edge){v,head[u],x};
        head[u]=cnt;
    }
     
    int dfs(int x)
    {
        p[x]=1;
        for (int i=head[x];i!=-1;i=e[i].next)
        {
            int t=e[i].to;
            if (p[t]==0)
            {
                f[t]=f[x]*e[i].a;
                if (!dfs(t))
                    return 0;
            }
            else if ((f[x]*e[i].a-f[t])>eps)
                return 0;
        }
        return 1;
    }
     
    int main()
    {
        scanf("%d",&T);
        while (T--)
        {
            cnt=0;
            scanf("%d%d",&n,&m);
            for (int i=1;i<=n;i++)
                head[i]=-1,p[i]=0,f[i]=0;
            for (int i=1;i<=m;i++)
            {
                scanf("%d%d%d%d",&u,&v,&x,&y);
                link(v,u,1.0*x/y);          
                link(u,v,1.0*y/x);
            }
            bool flag=false;
            for (int i=1;i<=n;i++)
                if (!p[i])
                {
                    f[i]=1.0;
                    if (!dfs(i))
                    {
                        flag=true;
                        break ;
                    }
                }
            printf("Case #%d: ",++yjy);
            if (!flag)
                printf("Yes
    ");
            else
                printf("No
    ");
        }
        return 0;
    }
    

      

  • 相关阅读:
    6.4 总结(关于正确率)
    POI2013 Bytecomputer
    BZOJ1485 有趣的数列
    PAM
    BZOJ1787 meet
    BZOJ3895 rock
    URAL 1996 Cipher Message 3
    BZOJ1468 Tree
    Javascript初识之数据类型
    Javascript初识之流程控制、函数和内置对象
  • 原文地址:https://www.cnblogs.com/yangjiyuan/p/5547395.html
Copyright © 2011-2022 走看看