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