美团 0907 笔试 寄
寄寄子,为什么第二题放map里面统计每个结点的子节点数量,再求有N个子结点的结点数量,再遍历求组合数,过不了

        全部评论 
 过了多少?
我已经考虑子父节点关系了,而且我自己还测了好几个样例,子,父节点给的顺序颠倒的,都没问题,但是通过还是0😓😓
不知道,我自测了一个样例有多组数据的情况,但是一直显示答案出错
死活过不了 一点都不过
给出只是边,需要根据根结点往下查判断父子关系
俺也一样,寄
他只说了有一条边 没说前一个一定是自节点
#include <iostream>
(30316)#include <vector>
#include <unordered_map>
using namespace std;
long long siminode(int& n, vector<vector<int>>& group){
    if(n == 1 || n == 2) return 0;
    long long ans = 0;
    unordered_map<int ,int> m;
    for(int i = 1; i < n+1; ++i){
        m[group[i].size()]++;
    }
    
    for(auto i: m){
        if(i.second>=2){
            ans += (i.second*(i.second-1))/2;
        }
    }
    
    return ans;
}
int main() {
    int T;
    cin>>T;
    vector<vector<int>> group;
    while (T--) { // 注意 while 处理多个 case
        int n,u,v;
        cin>>n;
        int temp = n-1;
        
        group.resize(n+1);
        while(temp--){
            cin>>u>>v;
            group[u].push_back(v);
        }
        
        cout << siminode(n,group) << endl;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")为什么过不了啊
和我一样,没过
对啊,为什么啊
相关推荐
 海康威视公司福利 1137人发布
海康威视公司福利 1137人发布
 查看6道真题和解析
查看6道真题和解析