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 ...
随机推荐
- 将资源文件夹中的文件通过流的方式写入到应用的File文件夹中
//1.在Files文件夹中创建同名的数据库文件 File files = getFilesDir(); File file = new File(files, DBName); if(file.ex ...
- 【Linux学习】nohup后台运行程序以及输出重定向
Linux有两种命令使程序后台运行 第一种:支持后台运行,但是关闭终端的话,程序也会停止 command & 第二种:支持后台运行,关闭终端后,程序也会继续运行 nohup command & ...
- [Leetcode Week15]Populating Next Right Pointers in Each Node II
Populating Next Right Pointers in Each Node II 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/popul ...
- python基础===继承
编写类时,并非总是要从空白开始.如果你要编写的类是另一个现成类的特殊版本,可使用继承.一个类继承另一个类时,它将自动获得另一个类的所有属性和方法:原有的类称为父类,而新类称为子类.子类继承了其父类的所 ...
- python基础===Character string
本文转自:python之Character string 1.python字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串,l Python不支持单 ...
- delphi2006语言新特性:Record类型高级用法
delphi语言在传统的Records类型的基础上增加了许多像类一样的高级功能,如:Records可以有属性和方法(包括构造constructors),类属性,类方法,类静态字段和内嵌类型.下面这个示 ...
- pycharm模板参数
# -*- coding: utf-8 -*-# @Time : ${DATE} ${TIME}# @Author : cxa# @File : ${NAME}.py# @Software: ${PR ...
- Eclipse和idea快捷键对比
花了一天时间熟悉IDEA的各种操作,将各种快捷键都试了一下,感觉很是不错!于是就整理了一下我经常用的一些Eclipse快捷键与IDEA的对比,方便像我一样使用Eclipse多年但想尝试些改变的同学们. ...
- leetcode 之Gas Station(11)
这题的思路很巧妙,用两个变量,一个变量衡量当前指针是否有效,一个衡量整个数组是否有解,需要好好体会. int gasStation(vector<int> &gas, vector ...
- spring mvc3+默认首页设置问题
web.xml配置: <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-patte ...