zoukankan      html  css  js  c++  java
  • [SDOI2016]齿轮

    题意:

    分析:

    一开始算比例的时候,怕用浮点数会不准确,结果就是用浮点数。
    然后,判断两个浮点数是否相等时,我直接比较,结果就错了。要用误差范围。但记得以前用这个好像还错了,然后就一直直接比较。
    直接搜索判断即可。

    代码:

    #include <bits/stdc++.h>
    #define pb push_back
    using namespace std;
    const double eps=1e-6;
    const int N=1010;
    bool vis[N],f;
    double d[N];
    struct node
    {
        int u,x,y;
    };
    vector<node>p[N];
    bool check(double x,double y)
    {
        return abs(x-y)<=eps;
    }
    void dfs(int v)
    {
        for(int i=0;i<p[v].size();i++)
        {
            node now=p[v][i];
            if(vis[now.u])//检验是否矛盾
            {
                double t=d[v]*now.y/now.x;
                if(!check(t,d[now.u]))
                {
                    f=0;
                    return;
                }
            }
            else
            {
                double t=d[v]*now.y/now.x;
                d[now.u]=t;
                vis[now.u]=1;
                dfs(now.u);
                if(!f) return;
            }
        }
    }
    int main()
    {
        int t,n,m,u,v,x,y,cas=0;
        scanf("%d",&t);
        while(t--)
        {
            f=1;
            scanf("%d%d",&n,&m);
            for(int i=1;i<=n;i++)
            {
                p[i].clear();
                d[i]=0;
                vis[i]=0;
            }
            for(int i=1;i<=m;i++)
            {
                scanf("%d%d%d%d",&u,&v,&x,&y);
                p[u].pb(node{v,x,y});
                p[v].pb(node{u,y,x});
            }
            for(int i=1;i<=n;i++)
            {
                if(!vis[i])
                {
                    vis[i]=1;
                    d[i]=1;
                    dfs(i);
                    if(!f) break;
                }
            }
            printf("Case #%d:",++cas);
            if(f)
                printf(" Yes
    ");
            else
                printf(" No
    ");
        }
        return 0;
    }
    
    
  • 相关阅读:
    掌门教育首通和续费文案整理
    python upload file遇到的坑,整理如下
    测试难题(转)
    敏捷测试与传统测试的区别
    质量体系
    幂等校验
    Charles常用功能整理
    测试难题
    敏捷测试与传统测试的区别
    质量体系
  • 原文地址:https://www.cnblogs.com/1024-xzx/p/12803153.html
Copyright © 2011-2022 走看看