题目地址:https://codeforces.com/contest/1230/problem/C
题意:无向图,最多七个点,放骨牌,每个骨牌有两个点,a和b,如图所示
放置的牌对应的的每个节点的牌点数要相同,例如
思路:六个点一定能放下,输出m即可,7个点时,有一个点重复用了,枚举重复用的点,找到重复边最少的即可。
AC代码:
1 #include <iostream> 2 using namespace std; 3 int main(){ 4 int n,m; 5 cin>>n>>m; 6 int a[8][8]={0}; 7 int x,y; 8 for(int i=1;i<=m;i++){ 9 cin>>x>>y; 10 a[x][y]=a[y][x]=1; 11 } 12 if(n<7) cout<<m; 13 else{ 14 int ans=22; 15 for(int i=1;i<=7;i++) 16 for(int j=1;j<=7;j++){ 17 int num=0; 18 for(int k=1;k<=7;k++) 19 if(a[i][k]&&a[j][k]) num++; 20 ans=min(ans,num); 21 } 22 cout<<m-ans<<endl; 23 } 24 return 0; 25 }