题解 | #找孙子#

找孙子

https://ac.nowcoder.com/acm/contest/62880/M

第M题题解

参考了大佬的思路,不得不说是真的牛!!!!!

解题思路:

每个数字存入子数集,再统计每个子数集下面的子数集个数求和即可

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int i,n,m;
    scanf("%d %d",&n,&m);
    int a[m+1]={0},b[m+1]={0},f[n+1]={0},g[n+1]={0}; //a数组用来存数字,b用来存数字的子数
    for(i=0;i<m;i++)
    {
        scanf("%d %d",&a[i],&b[i]);
        f[a[i]]++;         //f用来统计a中有多少个子数
    }
    for(i=0;i<m;i++)
        g[a[i]]+=f[b[i]];   //g用来统计子数的子数,并求和
    cout<<g[1];
    for(i=2;i<=n;i++)cout<<' '<<g[i];
}


全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务