Graph Coloring I(染色)
Graph Coloring I
https://www.nowcoder.com/acm/contest/203/J
题目描述
澜澜不服气,在黑板上画了一个三个点的完全图。修修跟澜澜说,这个图我能找到一个简单奇环。
澜澜又在黑板上画了一个n个点m条边的无向连通图。很可惜这不是一道数数题,修修做不出来了。
澜澜非常得意,作为一位毒瘤出题人,有了好题当然要跟大家分享,于是他把这道题出给你做了。
输入描述:
第一行两个整数n,m (1≤ n,m≤ 3*10
5
),接下来m行每行两个整数a
i
,b
i
表示一条边 (1≤ a
i
,b
i
≤ n)。
保证图连通,并且不存在重边和自环。
输出描述:
如果你能把图二染色,第一行输出0,第二行输出n个整数
表示每个点的颜色 (0≤ x
i
≤ 1)。如果有多种合法方案,你可以输出任意一种。
如果你能找到一个简单奇环,第一行输出环长k,第二行输出k个整数
表示环上结点编号 (1≤ y
i
≤ n),你需要保证y
i
和y
i+1
之间有边,y
1
和y
n
之间有边。如果有多种合法方案,你可以输出任意一种。
如果两种情况都是可行的,你只需要输出任意一种。
如果两种情况都是不可行的,请输出一行一个整数-1。
输入例子:
3 2
1 2
1 3
输出例子:
0
0 1 1
-->
输入
3 2
1 2
1 3
输出
0
0 1 1
输入
3 3
1 2
1 3
2 3
输出
3
1 2 3
用dfs边搜索边染色,看看有没有相邻的节点有相同的颜色,并判断是否有奇环(如果相邻的节点有相同的颜色就说明存在奇环),都不满足的话就输出-1
#include<iostream>
#include<cmath>
#include<vector>
#include<cstring>
#include<algorithm>
#define maxn 300005
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std; vector<int>ve[maxn];
int book[maxn];
int color[maxn];
int n,m;
int flag,Start; int dfs(int pos,int fa,int clr,int num){
if(book[pos]){
if(color[pos]==(clr^)) flag=;
if((num-book[pos])&){
cout<<num-book[pos]<<endl;
Start=pos;
return ;
}
return ;
}
book[pos]=num;
color[pos]=clr;
for(int i=;i<ve[pos].size();i++){
if(ve[pos][i]!=fa){
if(!dfs(ve[pos][i],pos,clr^,num+)){
if(pos!=Start){
cout<<pos<<" ";
return ;
}
else{
cout<<pos<<endl;
exit();
}
}
}
}
return ;
} int main(){
std::ios::sync_with_stdio(false);
cin>>n>>m;
int a,b;
flag=;
for(int i=;i<=m;i++){
cin>>a>>b;
ve[a].push_back(b);
ve[b].push_back(a);
}
mem(book,);
mem(color,-);
if(!dfs(,,,)) return ;
if(flag){
cout<<-<<endl;
}
else if(!flag){
cout<<<<endl;
for(int i=;i<=n;i++){
if(i!=){
cout<<" ";
}
cout<<color[i];
}
cout<<endl;
}
}
Graph Coloring I(染色)的更多相关文章
- UVA 193 Graph Coloring 图染色 DFS 数据
题意:图上的点染色,给出的边的两个点不能都染成黑色,问最多可以染多少黑色. 很水的一题,用dfs回溯即可.先判断和当前点相连的点是否染成黑色,看这一点是否能染黑色,能染色就分染成黑色和白色两种情况递归 ...
- Codeforces 664D Graph Coloring 二分图染色
题意: 一个无向图的每条边为红色或蓝色,有这样一种操作:每次选一个点,使与其相邻的所有边的颜色翻转. 求解是否可以经过一系列操作使所有的边颜色相同,并输出最少操作次数和相应的点. 分析: 每个点要么选 ...
- UVA Graph Coloring
主题如以下: Graph Coloring You are to write a program that tries to find an optimal coloring for agiven ...
- poj 1419 Graph Coloring
http://poj.org/problem?id=1419 题意: 一张图黑白染色,相邻点不能都染黑色,最多能染几个黑色点 最大点独立集 但是图不能同构为二分图,不能用二分图匹配来做 那就爆搜吧 还 ...
- GPS-Graph Processing System Graph Coloring算法分析 (三)
HamaWhite 原创,转载请注明出处!欢迎大家增加Giraph 技术交流群: 228591158 Graph coloring is the problem of assignin ...
- POJ 1419 Graph Coloring(最大独立集/补图的最大团)
Graph Coloring Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4893 Accepted: 2271 ...
- POJ1419 Graph Coloring(最大独立集)(最大团)
Graph Coloring Time Limit: 1000MS Memor ...
- uva193 - Graph Coloring
Graph Coloring You are to write a program that tries to find an optimal coloring for a given graph. ...
- 【POJ】1419:Graph Coloring【普通图最大点独立集】【最大团】
Graph Coloring Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5775 Accepted: 2678 ...
随机推荐
- 学习笔记之Elasticsearch
Elasticsearch: RESTful, Distributed Search & Analytics | Elastic https://www.elastic.co/products ...
- [UE4]头文件循环依赖C++
有2个类:aaa和bbb. aaa.h已经#include了bbb.h,则bbb.h就不能#include aaa.h,但bbb.cpp可以#include aaa.h bbb.h已经#include ...
- SDL播放音频的时候发现SDL_OpenAudioDevice打开一直失败
1:在使用SDL播放音频的时候发现SDL_OpenAudioDevice打开一直失败,导致SDL不能进入回调函数. 使用SDL_GetError()打印错误提示XAudio2: XAudio2Crea ...
- Hadoop(1.2.1)安装
背景知识: 1.数据分布存储,不是复制存储 2.数据不动,代码动,由于分布式存储,所以把代码移动到数据的地方计算. 3.数据如何分割,hadoop提供的分割文件的编程接口 安装: 1.安装JDK 1. ...
- css图片变色变暗变亮
本文章向码农介绍css 图片变色变暗变亮 实例代码如下: <style> *{margin:0;padding:0;list-style:none;} img{border:1px sol ...
- Executor框架(二)Executor 与 ExecutorService两个基本接口
一.Executor 接口简介 Executor接口是Executor框架的一个最基本的接口,Executor框架的大部分类都直接或间接地实现了此接口. 只有一个方法 void execute(Run ...
- JavaScript中的闭包与匿名函数
知识内容: 1.预备知识 - 函数表达式 2.匿名函数 3.闭包 一.函数表达式 1.定义函数的两种方式 函数声明: 1 function func(arg0, arg1, arg2){ 2 // 函 ...
- 红帽yum源安装报错initscripts-9.49.41-1.el7.x86_64 conflicts redhat-release < 7.5-0.11" ?
https://access.redhat.com/solutions/3425111 环境 Red Hat Enterprise Linux 7 问题 yum fails to apply upda ...
- HTML5 Canvas ( 画一个五角星 ) lineJoin miterLimit
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- maven下载与配置
转自:https://www.cnblogs.com/jdys/p/3770534.html 1.访问官网:从maven官网下载maven http://maven.apache.org/downlo ...