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;
}
原文:https://www.cnblogs.com/newstartCY/p/11712900.html