UVA 10004 Bicoloring(DFS染色)
2024-09-08 15:46:09
题意:
给N个点构成的无环无向图,并且保证所有点对都是连通的。
给每个点染色,要么染成黑要么染成白。问是否存在染色方案使得所有有边相连的点对颜色一定不一样。
是输出 BICOLORABLE 否则输出 NOT BICOLORABLE
思路:
从某点开始,直接进行染色,如果矛盾,返回false。
代码:
int n,l;
vector<int> graph[205];
int color[205]; bool dfs(int u,int fa){
if(color[fa]==0)
color[u]=1;
else
color[u]=0;
int L=graph[u].size();
rep(i,0,L-1){
int v=graph[u][i];
if(v!=fa){
if(color[v]==-1)
dfs(v,u);
else
if(color[v]+color[u]!=1) return false;
}
}
return true;
} int main(){
int start;
while(scanf("%d",&n)!=EOF,n){
scanf("%d",&l);
rep(i,0,n-1) graph[i].clear();
mem(color,-1); color[n]=0;
while(l--){
int u,v;
scanf("%d%d",&u,&v); start=u;
graph[u].push_back(v);
graph[v].push_back(u);
}
bool yes=dfs(start,n);
if(yes)
puts("BICOLORABLE.");
else
puts("NOT BICOLORABLE.");
}
}
最新文章
- SharePoint2016安装的过程的”Microsoft.SharePoint.Upgrade.SPUpgradeException”错误解决方法
- 【饿了么】招聘Java开发工程师、架构师
- 自定义加载loading view动画组件的使用。
- LeetCode 118 Pascal&#39;s Triangle
- 1. Two Sum I &; II &; III
- 几种I/O模型功能和性能对比
- 关于a标签和submit标签
- 使用函数库(JAVA API)
- PHP 表单 - 验证邮件和URL
- java的math常用方法
- L1范式和L2范式的区别
- node-http-proxy修改响应结果
- box-shadow讲解1
- SVNKIT操作SVN版本库的完整例子
- SQL注入(二)
- Redis学习笔记(一)关于在windows64位环境下的安装学习使用
- 作业一 :关于C语言
- 嵌入式开发平台迅为iTOP-4412开发板-ssh常见问题以及解决方法
- 查看Sql Server 数据库的内存使用情况
- linux下的mysql