CF #589 (Div. 2) D. Complete Tripartite 构造
这个 D 还是十分友好的~
你发现这 $3$ 个集合形成了一个环的关系,所以随意调换顺序是无所谓的.
然后随便让 $1$ 个点成为第 $2$ 集合,那么不与这个点连边的一定也属于第二集合.
然后再随便找一个与所选点有连边的点,将这个设为第 $3$ 集合中的点,然后与这个点有连边且不为第二集合的就是第一集合的.
构造出了 $3$ 个集合后再判断一下是否不合法即可.
几个判断方式:
1. 一个集合中不能有连边
2. 任意一个集合中所有点出边的数量应该相同.
3. 任何一个点集都不能为空.
#include <bits/stdc++.h>
#define N 100004
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
vector<int>G[N];
int vised[N],ty[N],cnt[N];
int main()
{
// setIO("input");
int n,m,i,j,flag=0;
scanf("%d%d",&n,&m);
for(i=1;i<=m;++i)
{
int a,b;
scanf("%d%d",&a,&b);
G[a].push_back(b);
G[b].push_back(a);
}
ty[1]=2;
cnt[2]=1;
for(i=0;i<G[1].size();++i)
{
int v=G[1][i];
vised[v]=1;
}
// 对2染色.
for(i=2;i<=n;++i) if(!vised[i]) ty[i]=2, ++cnt[2];
// 判断 2 有没有不合法的.
/*
for(i=2;i<=n;++i)
{
if(ty[i]==2)
{
for(j=0;j<G[i].size();++j)
{
int v=G[i][j];
if(ty[v]==2) flag=1;
}
}
}
*/
// 对 3 染色.
for(i=1;i<=n;++i)
{
if(vised[i])
{
for(j=0;j<G[i].size();++j)
{
int v=G[i][j];
if(!ty[v])
{
ty[v]=1;
++cnt[1];
}
}
ty[i]=3;
++cnt[3];
break;
}
}
for(i=1;i<=n;++i) if(!ty[i]) ty[i]=3, ++cnt[3];
for(i=1;i<=n;++i)
{
if(ty[i]==1)
{
for(j=0;j<G[i].size();++j)
{
int v=G[i][j];
if(ty[v]==1) flag=1;
}
if(G[i].size()!=cnt[2]+cnt[3]) flag=1;
}
if(ty[i]==2)
{
for(j=0;j<G[i].size();++j)
{
int v=G[i][j];
if(ty[v]==2) flag=1;
}
if(G[i].size()!=cnt[1]+cnt[3]) flag=1;
}
if(ty[i]==3)
{
for(j=0;j<G[i].size();++j)
{
int v=G[i][j];
if(ty[v]==3) flag=1;
}
if(G[i].size()!=cnt[1]+cnt[2]) flag=1;
}
}
for(i=1;i<=n;++i) if(!ty[i]) flag=1;
if(!cnt[1]||!cnt[2]||!cnt[3]) flag=1;
if(flag) printf("-1\n");
else
{
for(i=1;i<=n;++i) printf("%d ",ty[i]);
}
return 0;
}
CF #589 (Div. 2) D. Complete Tripartite 构造的更多相关文章
- Codeforces Round #589 (Div. 2) D. Complete Tripartite(染色)
链接: https://codeforces.com/contest/1228/problem/D 题意: You have a simple undirected graph consisting ...
- Codeforces Round #589 (Div. 2) D. Complete Tripartite(模拟)
题意:给你n个点 和 m条边 问是否可以分成三个集合 使得任意两个集合之间的任意两个点都有边 思路:对于其中一个集合v1 我们考虑其中的点1 假设点u和1无边 那么我们可以得到 u一定和点1在一个集合 ...
- CF #589 (Div. 2)C. Primes and Multiplication 快速幂+质因数
题目链接:https://www.luogu.org/problem/CF1228C 问题可以转化为:求质数 $p$ 在 $1\sim n$ 中的每个数中的次幂之和. 因为 $p$ 是一个质数,只能由 ...
- Codeforces Round #589 (Div. 2) (e、f没写)
https://codeforces.com/contest/1228/problem/A A. Distinct Digits 超级简单嘻嘻,给你一个l和r然后寻找一个数,这个数要满足的条件是它的每 ...
- CF #376 (Div. 2) C. dfs
1.CF #376 (Div. 2) C. Socks dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...
- CF #375 (Div. 2) D. bfs
1.CF #375 (Div. 2) D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...
- CF #374 (Div. 2) D. 贪心,优先队列或set
1.CF #374 (Div. 2) D. Maxim and Array 2.总结:按绝对值最小贪心下去即可 3.题意:对n个数进行+x或-x的k次操作,要使操作之后的n个数乘积最小. (1)优 ...
- CF #374 (Div. 2) C. Journey dp
1.CF #374 (Div. 2) C. Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ...
- CF #371 (Div. 2) C、map标记
1.CF #371 (Div. 2) C. Sonya and Queries map应用,也可用trie 2.总结:一开始直接用数组遍历,果断T了一发 题意:t个数,奇变1,偶变0,然后与问的 ...
随机推荐
- redis用法分析
redis基本介绍 redis也是一个内存非关系型数据库,它拥有memcache在数据存储上的全部优点,而且在memcache的基础上增加了数据持久性功能,redis用rdb和aof两种方式实现数据持 ...
- 调整统计信息JOB采样时间
一.需求说明 Oracle数据库中存在定时JOB,自动执行收集统计信息的程序.但是对于7*24小时系统来说,Oracle配置的定时收集时间不太合理,需要人为调整.本篇博客就是基于这种需求,调整JOB采 ...
- (错误)启动ActiveMQ报错:Transport Connector could not be registered in JMX: java.io.IOException: Failed to bind to server socket: stomp://0.0.0.0:61613?
一.错误报告 很明显,端口被占用 二.解决方法 1. 在cmd中输入 netstat -ano 查看61613端口被占用情况,如果有其他进程使用,则使用 taskkill /f /pid 进程PID ...
- 微信小程序wx:key以及wx:key=" *this"详解:
今天写微信小程序无意中看到控制台给出了这样一行提示: 求解百度才知道,给大家分享一下: 1.wx:for定义 官方文档:在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲 ...
- c++-01--迭代器
迭代器的概念 除了在其它语言中司空见惯的下标法访问容器元素之外,C++ 语言提供了一种全新的方法——迭代器(iterator)来访问容器的元素.迭代器其实类似于引用,指向容器中某一元素.迭代器(ite ...
- Django路由及函数视图
路由系统 在django中,uri与逻辑函数的对应关系我们称之为路由系统 伪静态 伪静态是相对于静态文件来说的,例如https://www.cnblogs.com/hesujian/p/1116581 ...
- springload热更新的优缺点
java开发web应用没有.net的方便快捷, 原因是传统开发模式下新增修改代码后要查看效果, 一般要重启应用, 导致浪费了许多无谓的时间,没有.net的高效, 任意更新文件实时生效. 但是有个叫sp ...
- PHP 根据二维数组中的某个字段进行排序
<?php $data = array( array( 'id' => 5698, 'first_name' => 'Bill', 'last_name' => 'Gates' ...
- python 解析Hdfs上的数据文件
python想直接读取hadoop上的文件内容,一番操作,头发掉了几根,也没能解析出来parquet文件类型的文件. 本博文简单讲解一下TEXTFILE文件格式的解析: 需要安装模块hdfs from ...
- .Net IOC 框架
CastleWindsor 参见:CastleWindsor | .Net IOC 框架 AutoFace 参见:AutoFace | .Net IOC 框架 Unity 参见:Unity | .Ne ...