题意

https://vjudge.net/problem/CodeForces-1230C

给了你总共有21张多米诺骨牌,每张牌有两个面,然后给你一个无向图,保证没有环和一个顶点多条边的情况存在。现在让你在这个图中的每个边放多米诺骨牌。有一个放置规则,问你最多能放几张多米诺骨牌上去。 放置规则就是,每个点的权值都是一样的,你在每条边上放的多米诺骨牌,因为它有两个面。需要保证两个面上面的大小就是它指向的点的权值。

4 4
1 2
2 3
3 4
4 1

Here is an illustration of Anadi's graph from the first sample test:

And here is one of the ways to place a domino on each of its edges:

 

思路

建议直接看样例,题意就理解了。

当n<7时,显然所有边都能满足。

当n==7时,枚举两个点取值相同,然后求这两个点共同连的点数(不合法的情况),用m减去这个最小值即可。

代码

#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define ll long long
const int N=200005;
const int mod=1e9+7;
const double eps=1e-8;
const double PI = acos(-1.0);
#define lowbit(x) (x&(-x))
int g[8][8];
int main()
{
std::ios::sync_with_stdio(false);
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int u,v;
cin>>u>>v;
g[u][v]=g[v][u]=1;
}
if(n<7)
{
cout<<m<<endl;
return 0;
}
int mn=inf;
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
int t=0;
for(int k=1;k<=n;k++)
{
if(g[i][k]&&g[k][j])
{
t++;
}
}
mn=min(t,mn);
}
}
cout<<m-mn<<endl;
return 0;
}

  

最新文章

  1. 浅谈系列之 javascript原型与对象
  2. excel 两列比较内容是否相同
  3. 转@ManyToMany- annotation关系映射篇(下)
  4. 二叉树遍历(Binary Tree Traversal)
  5. Android开发中的全屏背景显示方案
  6. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q25-Q28)
  7. php 简单分页类
  8. android Animation 动画绘制逻辑
  9. 【MariaDB】MariaDB编译参数
  10. DELPHI 通過窗口句柄或窗口标题得到进程句柄
  11. HDU - 2160 递推
  12. Protobuf java版本安装步骤
  13. vue.js学习系列-第二篇
  14. Python面向对象基础知识
  15. vue axios上传文件实例
  16. activemq学习笔记2
  17. 题解-BOI 2004 Sequence
  18. C#编程 - 交通灯模拟
  19. 《pyhton语言程序设计》_第一章笔记
  20. shell编程学习笔记(二):Shell中变量的使用

热门文章

  1. [认证 &amp; 授权] 3. 基于OAuth2的认证(译)
  2. LeetCode 按序打印
  3. canvas在vue中的应用
  4. Unable to connect to the server: x509: certificate signed by unknown authority
  5. Netfilter,获取http明文用户名和密码
  6. web项目的初始搭建和intellij的tomcat的配置
  7. 初级模拟电路:4-1 BJT交流分析概述
  8. IDEA 工具自动生成JavaBean类
  9. log4j日志打印的配置文件简单使用
  10. javascript中的toString()