题解 | 统计个数

统计个数

https://www.nowcoder.com/practice/40e1a621add44290a62cfb5b227413fb

三角形的前提是线。对每个点进行深度为2的dfs就好了,当深度等于2时意味着构成一条线。然后判断线的末尾与起点之间是否有连边即可,用来更新三角形的个数。

#include<bits/stdc++.h>
using namespace std;
int n, m, gx[205][205], ecnt, tcnt;
vector<int> g[205];
int gcd(int a, int b) {
    if(b==0) return a;
    return gcd(b, a%b);
}
void fill(int x, int dep, int fa, int cen) {
    if(dep==2) {
        ecnt++;
        if(gx[x][cen]) tcnt++;
        return;
    }
    for(auto &ele: g[x]) {
        if(ele!=fa) fill(ele, dep+1, x, cen);
    }
}
void solve() {
    cin>>n>>m;
    for(int i=1; i<=n; i++) {
        g[i].clear();
        for(int j=1; j<=n; j++) {
            gx[i][j]=0;
        }
    }
    for(int i=1; i<=m; i++) {
        int u, v; cin>>u>>v;
        g[u].push_back(v);
        g[v].push_back(u);
        gx[u][v]=gx[v][u]=1;
    }
    ecnt=tcnt=0;
    for(int i=1; i<=n; i++) {
        fill(i, 0, 0, i);
    }
    if(tcnt==0) ecnt=1;
    cout<<tcnt/gcd(tcnt, ecnt)<<'/';
    cout<<ecnt/gcd(tcnt, ecnt)<<'\n';
}
int main() {
    int T; cin>>T; while(T--) solve();
}

全部评论

相关推荐

03-01 21:45
中北大学 Python
孤蓝长空:请你说一下为什么你用websocket而不是http,请你说一下什么是rpc,为什么用rpc,你的rpc的传输协议是JSON,xml还是什么 请你描述一下你的鉴权流程(完整的) 我问的是第二个项目,随便问的哈哈哈
开工第一帖
点赞 评论 收藏
分享
在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务