图
2016-04-27 13:54
302 查看
二分图染色
#include <cstdio>
#include <vector>
using namespace std;
#define maxn 102
vector<int>G[maxn];
int color[maxn]; //顶点i的颜色(-1或1)
int V,E;
//把顶点染成1或者-1
bool dfs(int v,int c){ //顶点编号,颜色
color[v]=c; //把v染成颜色c
for(int i=0;i<G[v].size();i++){
//相邻的点同色,false
if(color[G[v][i]]==c) return false;
//相邻的点未染色,染成-c
if(color[G[v][i]] == 0 && !dfs(G[v][i],-c) ){
return false;
}
}
//全都染色了
return true;
}
void solve(){
for(int i=0;i<V;i++){
if(color[i]==0){
//如果i还没有被染色,则染成1
if(!dfs(i,1)){
puts("No");
return;
}
}
}
printf("Yes\n");
}
int main(){
int s, t;
scanf("%d %d",&V,&E);
for(int i=0;i<E;i++){
//从s向t连
scanf("%d%d",&s,&t);
G[s].push_back(t);
G[t].push_back(s);
//如果无向图,再从t向s连
}
solve();
for(int i=0;i<V;i++)
printf("%d ",color[i]);
return 0;
}
#include <cstdio>
#include <vector>
using namespace std;
#define maxn 102
vector<int>G[maxn];
int color[maxn]; //顶点i的颜色(-1或1)
int V,E;
//把顶点染成1或者-1
bool dfs(int v,int c){ //顶点编号,颜色
color[v]=c; //把v染成颜色c
for(int i=0;i<G[v].size();i++){
//相邻的点同色,false
if(color[G[v][i]]==c) return false;
//相邻的点未染色,染成-c
if(color[G[v][i]] == 0 && !dfs(G[v][i],-c) ){
return false;
}
}
//全都染色了
return true;
}
void solve(){
for(int i=0;i<V;i++){
if(color[i]==0){
//如果i还没有被染色,则染成1
if(!dfs(i,1)){
puts("No");
return;
}
}
}
printf("Yes\n");
}
int main(){
int s, t;
scanf("%d %d",&V,&E);
for(int i=0;i<E;i++){
//从s向t连
scanf("%d%d",&s,&t);
G[s].push_back(t);
G[t].push_back(s);
//如果无向图,再从t向s连
}
solve();
for(int i=0;i<V;i++)
printf("%d ",color[i]);
return 0;
}
相关文章推荐
- 通过eclipse生成doc
- 在线文档预览方案-office web apps
- Linux常用命令的简单总结
- Shader 坐标转换
- 【小松教你手游开发】【系统模块开发】图文混排 (在label中插入表情)
- final关键字用于String时的一个问题
- Memcached 集群的高可用(HA)架构
- bzoj 1251: 序列终结者(splay)
- Swift学习 (长期)
- 【翻译】Xibo官方文档6-CMS Maintenance
- 会话管理之Cookie技术
- [LintCode] Super Ugly Number 超级丑陋数
- iOS -- 无开发者账号真机调试
- Python使用pip install psycopg2安装psycopg2包出现python setup.py egg_info failed with error code 1 in /tmp/pip-build-YtLeN3/psycopg2错误处理
- Cannot run program "/home/user/Android/Sdk/build-tools/23.0.2/aapt": error=2 No such file or directo
- SQL优化:重新编译存储过程和表
- 钢管焊缝缺陷检测
- ListView使用技巧(一):ViewHolder
- 直接选择排序
- 《构建之法》第六、七章读后感