codeforces 图论题目集(持续更新)

Dasha Code Championship - SPb Finals Round (only for onsite-finalists)

A. Anadi and Domino

https://codeforces.com/problemset/problem/1210/A

思路:当Grape中节点个数少于等于6个时,最多存在15条边,每个节点赋值一个点数,所以n <= 6 时,可存在变数为m,当Grape中节点的个数为7个时,必然是存在俩个节点属于同一标记的,因此枚举每俩个节点,

如果其他节点和这俩个节点同时存在边,则这条边必然是不可取的,因为各种类型的筛子只能取一个,所以需要减去

/*
 * @Author: CY__HHH
 * @Date: 2019-10-21 12:09:09
 * @LastEditTime: 2019-10-21 12:09:09
 */
#include<bits/stdc++.h>
#define inf (0x3f3f3f3f)
typedef long long i64;
using namespace std;
const int maxn = 32;
bool Grape[maxn][maxn]; 
int main() {
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    int n,m,u,v;    cin >> n >> m;
    for(int i=0;i!=m;++i)
    {
        cin >> u >> v;
        Grape[u][v] = Grape[v][u] = true;
    }
    int minn = inf;
    if( n <= 6)
        cout << m <<'\n';
    else{
        for(int i=1;i<=n;++i)
        {
            for(int j=i+1;j<=n;++j)
            {
                int  cnt = 0;
                for(int k=1;k<=n;++k)
                    if(Grape[i][k]&&Grape[j][k])
                        ++cnt;
                minn = min(minn,cnt);
            }
        }
        cout << m - minn << '\n';
    }
    return 0;
}

  

猜你喜欢

转载自www.cnblogs.com/newstartCY/p/11712900.html