第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];
}

京公网安备 11010502036488号