(突破口是n<=7,注意到这个你就成功了一半)
(当n<=6,每个点上放一个不同数字)
(这样一个点最多往外连5条边,而不管以什么数字开头,都有6种这样的筛子)
(比如11,12,13,14,15,16)
(这种情况m条边都可以放上筛子)
(当n==7,那么第七个点数字必然和前面某一个点相同)
(当两个相同数字的点连向同一个点时,有一条边是放不了的)
(比如两个点数字都是2,都和数字3的点相连,那么这两条边都只能放23)
(所以我们枚举相同的两个点计算最大答案)
#include <bits/stdc++.h>
using namespace std;
int n,m,ans,dp[8][8];
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int l,r;
cin>>l>>r;
dp[l][r]=dp[r][l]=1;
}
if(n<=6) cout<<m;
else
{
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
{
int res=0;
for(int k=1;k<=n;k++)
if(dp[i][k]&&dp[j][k]) res++;
ans=max(ans,m-res);
}
cout<<ans;
}
}