题意:大意是说给定1-n个点,这些点之间每两点连成一条线,其中一个人取走一些,剩下的给另一个人,看看最后两个人手中的线还能凑成多少三角形。
题解:见http://blog.csdn.net/flying_stones_sure/article/details/8037028
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int dis[1000010];
int main()
{
memset(dis,0,sizeof(dis));
long long m,n;
scanf("%lld%lld",&n,&m);
int x,y;
for(int i=0;i<m;i++)
{
scanf("%d%d",&x,&y);
dis[x]++;
dis[y]++;
}
long long sum=0;
for(int i=1;i<=n;i++)
if(dis[i])
{
sum+=dis[i]*(n-1-dis[i]);
}
sum/=2;
printf("%lld\n",n*(n-1)*(n-2)/6-sum);
return 0;
}