题目意思
给你n个点,让你在这n个点之间加边,但是不管咋加都不能形成三个点的直接相通环,让求最大的边数。
解题思路
开始做这道题的时候以为是找规律题,后来才明白这是一个完全二分图的结论题。要求最大的边数还不能出现三个边的环,我们可以将n个点分成两个顶点集,让两个互不相交的顶点集中的点两两相连,同一集合中的任意点不能相连,得到最大的边数。也就是最大边数=n/2/*(n-n/2)。
代码部分
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int T,n;
scanf("%d",&T);
while(T--)
{
cin>>n;
int ans=(n/2)*(n-n/2);
cout<<ans<<endl;
}
return 0;
}