luogu 4429 染色
bjoi 2018 染色 推了个错误结论得了60分?
题目大意:
一个无重边和自环的无向图,并且对每个点分别给了一个大小为2的颜色集合,只能从这个集合中选一种颜色给这个点染色
求一个染色方案使得没有两个有边相连的点被染了相同的颜色
求是否无论颜色集合是什么,均有办法按照要求染色
思路:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<queue>
#include<vector>
#define ll long long
#define MAXN 10100
#define inf 2139062143
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-;ch=getchar();}
while(isdigit(ch)) {x=x*+ch-'';ch=getchar();}
return x*f;
}
struct edge{int s,t,nxt;}e[MAXN<<];
int n,m,fst[MAXN],cnt,ans;
int d[MAXN],vis[MAXN],fa[MAXN];
void add(int u,int v)
{
e[++cnt].s=u,e[cnt].t=v,e[cnt].nxt=fst[u];
fst[u]=cnt,d[u]++;
}
int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}
queue <int> q;
vector <int> v[MAXN];
int main()
{
int T=read();
while(T--)
{
n=read(),m=read();int a,b;
for(int i=;i<=MAXN;i++) v[i].clear();
for(int i=;i<=n;i++) fa[i]=i;
memset(fst,,sizeof(fst));
memset(d,,sizeof(d));cnt=,ans=;
memset(vis,,sizeof(vis));
for(int i=;i<=m;i++) {a=read(),b=read();add(a,b);add(b,a);}
for(int i=;i<=n;i++)
if(d[i]==) {q.push(i);vis[i]=;}
while(!q.empty())
{
a=q.front();q.pop();b=-;
for(int j=fst[a];j;j=e[j].nxt)
if(!vis[e[j].t]) b=e[j].t;
if(b==-) continue;
d[b]--;
if(d[b]==){vis[b]=;q.push(b);}
}
for(int i=;i<=*m;i+=)
if(!vis[e[i].s]&&!vis[e[i].t])
{
int a=find(e[i].s),b=find(e[i].t);
if(a!=b) fa[a]=b;
}
for(int i=;i<=n;i++) v[find(i)].push_back(i);
for(int i=;i<=n;i++)
if(fa[i]==i)
{
if(v[i].size()==) continue;
int x=,y=-,z=-,can=;
for(int j=;j<v[i].size();j++)
{
if(d[v[i][j]]>) can=;
if(d[v[i][j]]==)
{
x++;
if(x==) y=v[i][j];
else z=v[i][j];
}
}
if(!can) ans=;
if(x==||x>) ans=;
if((!x)&&v[i].size()%==) ans=;
if(x==)
{
if(v[i].size()%==) ans=;
int p=;
for(int j=;j<v[i].size();j++)
if(v[i][j]!=y&&v[i][j]!=z)
{
a=;
for(int k=fst[v[i][j]];k;k=e[k].nxt)
if(e[k].t==y||e[k].t==z) a++;
if(a==) p++;
}
if(p<) ans=;
}
}
if(ans) puts("YES");
else puts("NO");
}
}
luogu 4429 染色的更多相关文章
- Luogu P2486 染色(树链剖分+线段树)
题解 不妨采取重链剖分的方式把路径剖成区间,然后用线段树维护,考虑如何合并一个区间 struct Node { int lf, rg, tot; }seg[N << 2]; int col ...
- [Luogu 2486] SDOI2011 染色
[Luogu 2486] SDOI2011 染色 树剖水题,线段树维护. 详细题解不写了. 我只想说我写的线段树又变漂亮了qwq #include <algorithm> #include ...
- Luogu P2486 [SDOI2011]染色(树链剖分+线段树合并)
Luogu P2486 [SDOI2011]染色 题面 题目描述 输入输出格式 输入格式: 输出格式: 对于每个询问操作,输出一行答案. 输入输出样例 输入样例: 6 5 2 2 1 2 1 1 1 ...
- LOJ #2527 Luogu P4491「HAOI2018」染色
好像网上没人....和我推出....同一个式子啊..... LOJ #2527 Luogu P4491 题意 $ n$个格子中每个格子可以涂$ m$种颜色中的一种 若有$ k$种颜色恰好涂了$ s$格 ...
- luogu P2486 [SDOI2011]染色
树剖做法: 就是两个dfs+一个线段树 难度的取决基本==线段树的维护难度 所以对有点线段树基础的,树剖也不难做吧 这里操作有二 一:两点间路径染色 线段树的区间赋值操作 二:查询路径段的个数 考虑线 ...
- 【Luogu】P3155叶子的染色(树形DP)
题目链接 树形DP水题qwq. 设f[i][j]是以i为根的子树,染成j色,且满足内部需求的最少染色节点数. 设to是x的子节点,那么状态转移方程如此设计: 1.f[i][0] 这个状态表示i不染色, ...
- 【Luogu】P1330封锁阳光大学(bfs染色)
题目链接 这题恶心死我了. bfs染色,统计每个联通块两色的个数,ans加它们的最小值. #include<cstdio> #include<cctype> #include& ...
- BZOJ 4823 Luogu P3756 老C的方块 染色+最小割
题面太长了请各位自行品尝—>老C的方块 分析: 我们要解决掉所有使人弃疗的组合,还要保证花费最小,容易想到最小割(当然你要是想费用流的话,我们就没办法定义流量了) 我们来分析一下那些令人弃疗的组 ...
- LUOGU 1525 关押罪犯 - 并查集拆点(对立点) / 二分+二分图染色
传送门 分析: 并查集: 第一步先将所有矛盾从大至小排序,显然先将矛盾值大的分成两部分会更优. 普通的并查集都只能快速合并两个元素至同一集合,却不能将两个元素分至不同集合. 对于将很多数分成两个集合, ...
随机推荐
- 零基础入门学习Python(12)--列表:一个打了激素的数组(3)
前言 这节课我们继续谈一下Python列表一些知识 知识点 Python常用操作符 比较操作符 >>> list1 = [123] >>> list2 = [234 ...
- Excel OLE控制
来源:http://blog.csdn.net/chelen_jak/article/details/7069095 Delphi 控制Excel(一) 使用动态创建的方法 首先创建 Excel 对 ...
- 带FIFO的UART数据接收
芯片手册 某个Cortex-M4芯片带有1个UART,支持Tx,Rx 的FIFO功能,而且可以通过寄存器配置FIFO的阈值,芯片的datasheet并不完善,没有说明RX的FIFO具体有几个级别,每隔 ...
- xtu summer individual-4 D - Martian Strings
Martian Strings Time Limit: 2000ms Memory Limit: 262144KB This problem will be judged on CodeForces. ...
- [NOIP2006] 提高组 洛谷P1064 金明的预算方案
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”.今 ...
- ehcache、memcache、redis三大缓存比较
最近项目组有用到这三个缓存,去各自的官方看了下,觉得还真的各有千秋!今天特意归纳下各个缓存的优缺点,仅供参考! Ehcache 在Java项目广泛的使用.它是一个开源的.设计于提高在数据从RDBMS ...
- Layui图标
layui 图标 layui 的所有图标全部采用字体形式,取材于阿里巴巴矢量图标库(iconfont).因此你可以把一个 icon 看作是一个普通的文字,这意味着你直接用 css 控制文字属性,如 c ...
- MongoDB小结23 - 索引简介
MongoDB中的索引,可以看作是书的目录. 想象一下给你一本没有目录的书,然后让你去查询指定内容,我只想说,我不是电脑,我很蛋疼! 让你翻没有目录的书,就跟让电脑查询没有索引的集合一样,从头查询到尾 ...
- Linux纯Shell实现DNSPod动态域名
http://www.anrip.com/post/872 开发背景: 公司有台嵌入式拨号上网设备,内置busybox和完整wget命令(支持https协议),但没有curl.python.ruby. ...
- epoll 的accept , read, write
http://www.ccvita.com/515.html 在一个非阻塞(fcntl)的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就 ...