牛客算法周周练20 F.紫魔法师 (二分图染色)
2024-09-05 11:57:19
题意:给你一张图,对其染色,使得相连的点的颜色两两不同求,最少使用多少种颜色.
题解:首先,若\(n=1\),只需要一种.然后我们再去判断是否是二分图,对于二分图,两种颜色就够了,若不是二分图,也就是可能存在奇环的情况,那么三种颜色铁够了.所以题目就转化成了判断是否是二分图.
代码:
int n,m;
int u,v;
int color[N];
vector<int> V[N]; bool dfs(int u,int c){
color[u]=c; for(auto w:V[u]){
if(!color[w]){
if(!dfs(w,3-c)) return false;
}
else{
if(color[w]==c) return false;
}
}
return true;
} int main() {
//ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
scanf("%d %d",&n,&m); for(int i=1;i<=m;++i){
scanf("%d %d",&u,&v);
V[u].pb(v);
V[v].pb(u);
}
if(n==1){
puts("1");
return 0;
}
bool flag=true;
for(int i=1;i<=n;++i){
if(!color[i]){
if(!dfs(i,1)){
flag=false;
break;
}
}
} if(!flag) puts("3");
else puts("2"); return 0;
}
最新文章
- centos下为大硬盘分区(大于2T)
- 让LinqToSQL使用Web.Config中的链接字符串(修改Settings.Designer.cs)
- 从零到有的lex学习
- node简单操作mysql的类
- NLP的两种工具的java版使用:复旦FudanNLP,中科院计算所ICTCLAS2013
- Ubuntu 14.10 下awk命令详解
- oracle客户端精简绿色版-环境变量配置
- [SQL] 要查询9 月份的数据中的任意时间段,可能是一个月的,也可能是1日到15日的
- CSS3属性之一:border-radius
- linux 学习之九、Linux 磁盘与文件系统管理(1)
- 在git彻底删除commit记录的方法是什么?
- Appium0.18.x迁移到Appium1.x须知事项(灰常实用,解答了本人几个疑问)
- POJ - 2828 Buy Tickets (段树单点更新)
- 使用ConfuserEx加密混淆程序以及如何脱壳反编译
- JavaScript(三) 数据类型
- LAB1 partI
- java时间计算
- <;Listener>;servletContextListener、httpSessionListener和servletRequestListener使用整理
- 关于react16.4——转发refs和片段Fragment
- 搜索入门_简单搜索bfs dfs大杂烩