题意:输入n个点m条边的联通图,n为奇数,设k为最小的奇数,使得每个点的度数不超过k,要求把节点都涂上颜色,使得相邻节点颜色不一样。
思路:dfs。k的值为奇数,所以k为节点最大度数(+1)。从当前节点往下找,如果下边的节点没有染色,就把当前节点染色继续下找。
code:
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const int INF=0x3fffffff;
const int inf=-INF;
const int N=10005;
const int M=2005;
const int mod=1000000007;
const double pi=acos(-1.0);
#define cls(x,c) memset(x,c,sizeof(x))
#define cpy(x,a) memcpy(x,a,sizeof(a))