zoukankan      html  css  js  c++  java
  • 三色环

    题面

    给定一张含有 nn 个点的无向完全图,其中 mm 条边是白边,其余是黑边。

    现在需要你求出同色的三元环(或者说,三角形)的个数。


    同色三角形其实难算,那么我们可以算异色三角形,用三角形的总个数减去它的一半

    如果一个点可以连出白色边x条就可以连出黑色边nx1条

    那我们从x条白边任意选一条,从n-x-1条黑边任意选一条,剩下一条边随意

    所以不同色三角形的个数就是x*(n-1-x)

    之后1-n枚举

    n个点可以构成的三角形个数就是n(n1)(n2)/(123)

    再减去sumn的一半就是答案

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    ll ans,n,m,a[100009];
    int main()
    {
        cin>>n>>m;
        for(int i=1;i<=m;i++)
        {
            int l,r;
            cin>>l>>r;
            a[l]++;a[r]++;
        }
        for(int i=1;i<=n;i++)
            ans+=(a[i]*(n-1-a[i]));
        ll z=1;
        z=n*(n-1)*(n-2)/6;
        cout<<z-ans/2;
    }
  • 相关阅读:
    引用的难点:函数返回值是引用(引用当左值)
    引用的意义与本质
    引用做函数参数
    Uva
    Uva
    Uva
    暑假集训-8.06总结
    暑假集训-8.05总结
    CH1801( 括号画家)
    最大异或对
  • 原文地址:https://www.cnblogs.com/iss-ue/p/12486845.html
Copyright © 2011-2022 走看看