Advertisement

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)

还没有任何评论哟~