UVa 1613 k度图的着色(K-Graph Oddity Python)
发布时间
阅读量:
阅读量
题意:
输入一个包含n个节点和m条边的连通图,其中n为奇数。设k为最小的奇数值,满足每个节点的度数不超过k。你的任务是将图中的节点涂上1到k之间的颜色,使得相邻的节点颜色不同。若有多种解法,可任选其一输出。题目保证存在解。
分析:
这道题初看令人费解,题目所求的k与度数有关,但本人认为这与图的着色问题并无直接联系(如有不同意见欢迎指正)。例如,若有一个节点从1出发连接了4条边,则按照题意k应为5。但实际上只需要将该节点设为2,其余连接点设为1即可满足条件。
接下来可以选取一个起点进行深度优先搜索,依次赋予颜色1、2、1、2……这样的方式进行赋值(此方法可能最优,但未给出严格证明,有兴趣的读者可自行验证)。
起初误以为该问题与度数相关,但经过分析发现并非如此。因此,在代码中Degree部分所涉及的id参数实际上并无作用。
代码:
#include<bits/stdc++.h>
#define LL long long
#define ms(s) memset(s, 0, sizeof(s))
using namespace std;
const int maxn = 1e4 + 10;
struct Degree {
int d;
int id;
friend bool op
全部评论 (0)
还没有任何评论哟~
