Codeforces Round #588 (Div. 2) C

#include<bits/stdc++.h>
using namespace std;
const int N=11;
const int inf=0x3f3f3f3f;
int read()
{
    int x=0,t=1;
    char ch=getchar();
    while(!isdigit(ch)){ if(ch=='-')t=-1; ch=getchar(); }
    while(isdigit(ch)){ x=10*x+ch-'0'; ch=getchar(); }
    return x*t;
}
int pic[N][N];

int main()
{
    int n=read(),m=read();
    for(int i=1;i<=m;i++)
    {
        int x=read(),y=read();
        pic[x][y]=pic[y][x]=1;
    }
    if(n<7) printf("%d
",m);
    else
    {
        int ans=0;
        for(int i=1;i<=7;i++)
        {
            for(int j=i+1;j<=7;j++)
            {
                int com=0;///表示i、j共用的边数; 错点:如果写在循环外面就表示i、与1-7共用边的个数
                for(int k=1;k<=7;k++)
                    if(pic[i][k]&&pic[j][k]) com++;
                ans=max(ans,m-com);
            }
        }
        printf("%d
",ans);
    }
    return 0;
}


原文地址:https://www.cnblogs.com/DeepJay/p/12025208.html