社区讨论

再次求调

学术版参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mhjl0hla
此快照首次捕获于
2025/11/04 04:17
4 个月前
此快照最后确认于
2025/11/04 04:17
4 个月前
查看原帖
P4079
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
const double eps=1e-9;
int f[100005];
double g[100005];
int get(int x)
{
    if(x==f[x])return x;
    int t=get(f[x]);
    g[x]*=g[f[x]];
    return f[x]=t;
}
bool eq(double x,double y)
{
    return fabs(x-y)<eps;
}
signed main(){
    int t;
    cin>>t;
    int tt=t;
    while(t--)
    {
        int n,m;
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            f[i]=i;
            g[i]=1;
        }
        cout<<"Case #"<<tt-t<<": ";        
        bool flag=1;
        for(int i=1;i<=m;i++)
        {
            int u,v;
            double x,y;
            cin>>u>>v>>x>>y;
            int f1=get(u),f2=get(v);
            if(f1==f2)
            {
                if(!eq(g[u]/g[v],x/y))
                {
                    flag=0;
                    break;
                }
            }
            f[f2]=f1;
            g[f2]*=g[u]/g[v]*y/x;
        }
        if(!flag)cout<<"No\n";
        else cout<<"Yes\n";
    }
    return 0;
}
30pts,其他RE

回复

0 条回复,欢迎继续交流。

正在加载回复...