https://codeforces.com/contest/1230/problem/C
共21个骰子,给一个无向图,n<=7个点,m<=n(n-1)/2条边,骰子放在边上,每个骰子对应的点的点数要一样。
#include <stdio.h>
int map[10][10];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
if(n<=6) //n<=6 则每个点各代表1 2 3 4 5 6,无论怎么连都行
{
printf("%d",m);
return 0;
}
int u,v,ans=1e9;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&u,&v);
map[u][v]=map[v][u]=1;
}
for(int i=1;i<=7;i++) //枚举起点
{
for(int j=i+1;j<=7;j++) //枚举终点
{
int cnt=0;
for(int k=1;k<=7;k++)
if(map[i][k]&&map[j][k])cnt++; //起点和终点共同相连的点
if(ans>cnt)ans=cnt; //因为把两个点看出同一个数字
} //则和他们相连的点,就会失去一半不能用
}
printf("%d",m-ans);
}