题目链接:https://vjudge.net/problem/Gym-101933K
题目大意:国王给你一个n个节点的树,有k种颜色,问正好染k种颜色的方法有多少种,前提是相邻的节点颜色不同
题解:其实仔细想想,就会发现只要求相邻节点之间不同颜色的话,和树的结构是无关的。如果只要求用k种颜色染,那么答案ans=k*(k-1)^(n-1),那么刚好染满这k种颜色的情况,就是ans减去只染了k-1种,k-2种,k-3种.....之后剩下的。所以就可以用容斥原理,最后公式如下:
代码如下:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
/*
使用容斥原理,直接用k种不同颜