AtCoder - 4162 Independence
Problem Statement
In the State of Takahashi in AtCoderian Federation, there are N cities, numbered 1,2,…,N. M bidirectional roads connect these cities. The i-th road connects City Ai and City Bi. Every road connects two distinct cities. Also, for any two cities, there is at most one road that directly connects them.
One day, it was decided that the State of Takahashi would be divided into two states, Taka and Hashi. After the division, each city in Takahashi would belong to either Taka or Hashi. It is acceptable for all the cities to belong Taka, or for all the cities to belong Hashi. Here, the following condition should be satisfied:
- Any two cities in the same state, Taka or Hashi, are directly connected by a road.
Find the minimum possible number of roads whose endpoint cities belong to the same state. If it is impossible to divide the cities into Taka and Hashi so that the condition is satisfied, print -1
.
Constraints
- 2≤N≤700
- 0≤M≤N(N−1)⁄2
- 1≤Ai≤N
- 1≤Bi≤N
- Ai≠Bi
- If i≠j, at least one of the following holds: Ai≠Aj and Bi≠Bj.
- If i≠j, at least one of the following holds: Ai≠Bj and Bi≠Aj.
Input
Input is given from Standard Input in the following format:
N M
A1 B1
A2 B2
:
AM BM
Output
Print the answer.
Sample Input 1
5 5
1 2
1 3
3 4
3 5
4 5
Sample Output 1
4
For example, if the cities 1,2 belong to Taka and the cities 3,4,5 belong to Hashi, the condition is satisfied. Here, the number of roads whose endpoint cities belong to the same state, is 4.
Sample Input 2
5 1
1 2
Sample Output 2
-1
In this sample, the condition cannot be satisfied regardless of which cities belong to each state.
Sample Input 3
4 3
1 2
1 3
2 3
Sample Output 3
3
Sample Input 4
10 39
7 2
7 1
5 6
5 8
9 10
2 8
8 7
3 10
10 1
8 10
2 3
7 4
3 9
4 10
3 4
6 1
6 7
9 5
9 7
6 9
9 4
4 6
7 5
8 3
2 5
9 2
10 7
8 6
8 9
7 3
5 3
4 5
6 3
2 10
5 10
4 2
6 2
8 4
10 6
Sample Output 4
21 打ARC的时候都想到模型了。。。但就是没做出来mmp,还是水平差啊QWQ
主要没想到的地方是: 如果把补图二分图染色(不是二分图就无解),每个联通分量挑一类点出来弄到一起一定能凑成最后的一个团。
我也不知道为什么当时没想到QWQ,明明这么简单。。。。
然后直接背包完了更新答案就好了QWQ,怎么看都是一个NOIP题,药丸药丸
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=705; inline int Get(int x){ return x*(x-1)>>1;} int num[3],n,m,ans=1<<30,uu,vv,col[N],now;
bool f[N][N],g[N][N]; bool dfs(int x,int c){
col[x]=c,num[c]++; for(int i=1;i<=n;i++) if(!g[x][i])
if(!col[i]){ if(!dfs(i,3-c)) return 0;}
else if(col[i]==c) return 0; return 1;
} int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
scanf("%d%d",&uu,&vv),g[uu][vv]=g[vv][uu]=1; f[0][0]=1;
for(int i=1;i<=n;i++) g[i][i]=1; for(int i=1;i<=n;i++) if(!col[i]){
num[1]=num[2]=0;
if(!dfs(i,1)){ puts("-1"); return 0;} now++;
for(int j=0;j<=n;j++) if(f[now-1][j]) f[now][j+num[1]]=f[now][j+num[2]]=1;
} for(int i=0;i<=n;i++) if(f[now][i]) ans=min(ans,Get(i)+Get(n-i)); printf("%d\n",ans);
return 0;
}
AtCoder - 4162 Independence的更多相关文章
- AtCoder Regular Contest 099 (ARC099) E - Independence 二分图
原文链接https://www.cnblogs.com/zhouzhendong/p/9224878.html 题目传送门 - ARC099 E - Independence 题意 给定一个有 $n$ ...
- AtCoder Regular Contest 099
AtCoder Regular Contest 099 C - Minimization 题意 题意:给出一个n的排列.每次操作可以使一段长度为K的连续子序列变成该序列的最小数.求最少几次使得整个数列 ...
- AtCoder Beginner Contest 084 C - Special Trains
Special Trains Problem Statement A railroad running from west to east in Atcoder Kingdom is now comp ...
- HDU 4162 最小表示法
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4162 题意:给定一个只有0-7数字组成的串.现在要由原串构造出一个新串,新串的构造方法:相邻2个位置的数字 ...
- 控制反转(IOC: Inverse Of Control) & 依赖注入(DI: Independence Inject)
举例:在每天的日常生活中,我们离不开水,电,气.在城市化之前,我们每家每户需要自己去搞定这些东西:自己挖水井取水,自己点煤油灯照明,自己上山砍柴做饭.而城市化之后,人们从这些琐事中解放了出来,城市中出 ...
- AtCoder Regular Contest 061
AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...
- Independence独立
Independence refers to the degree to which each test case stands alone. That is, does the success or ...
- HDU 4162 Shape Number
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4162 题意: 求给定字符的一阶差分链的最小表示. 题解: 先求一阶差分链,再求一阶差分链的最小表示法 ...
- AtCoder Grand Contest 001 C Shorten Diameter 树的直径知识
链接:http://agc001.contest.atcoder.jp/tasks/agc001_c 题解(官方): We use the following well-known fact abou ...
随机推荐
- .NET中方法的注意事项 明细
1. 方法中return 会终止整个方法段. 而break只能终止当前循环. 2. 方法就是一对可用代码的复用. a . 对于可重用的代码,在vs中选中,右键 重构 提取方法.即可自动封装成一个方 ...
- 简易微信小程序签到功能
一.效果图 点击签到后 二.数据库 用一张数据表存用户签到的信息,每次用户签到都会往表中添加一条记录了用户id和签到日期的数据,如下图 三.后端 后端写两个接口,一个用于查询用户今日是否签到和签到记录 ...
- python进行机器学习(二)之特征选择
毫无疑问,解决一个问题最重要的是恰当选取特征.甚至创造特征的能力,这叫做特征选取和特征工程.对于特征选取工作,我个人认为分为两个方面: 1)利用python中已有的算法进行特征选取. 2)人为分析各个 ...
- 前端—css
css css概述 CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离. 一.css的四种引入方式: 1.行内式 ...
- spin_USACO
Spinning Wheels1998 ACM NE Regionals Each of five opaque spinning wheels has one or more wedges cut ...
- 阿里云ECS的使用
一.阿里云ECS的使用 1.Linux CentOS Ubuntu Readhat 2.远程登录 xshell 远程登录 winScp 远程文件操作 3.Linux命令 cd 目录名 ls . ls ...
- [hadoop][基本原理]zookeeper场景使用
代码:https://github.com/xufeng79x/ZkClientTest 1. 简介 zookeeper的特性决定他适用到某些场景非常合适,比如典型的应用场景: 1.集群管理(Grou ...
- [New learn] 手势
1.简介 我们经常会在设备上查看图片等, 也会经常将图片通过手指的捏合打开来缩小和方法图片.这就是ios中的手势功能在起作用. 那么手势好像也是一种touch事件,那和UIResponder中定义的t ...
- JS监控手机或APP返回事件
做微信项目的时候,发现在Ios微信浏览器左上角有个返回按钮,但是点击返回时不稳定,跳到不该跳的页面.网上搜了一个捕获返回事件的JS代码,记录下来,便于以后查看. <span style=&quo ...
- Maximum Subarray——经典
Find the contiguous subarray within an array (containing at least one number) which has the largest ...