SP1870 MKLABELS 题解
Lonely_Peak · · 题解
题目大意
计算给定节点数
思路分析
这道题可以通过一种非常简单的方法来解决,通过凯莱公式来做。很多人可能连这是什么的不知道,那我们就先来了解一下凯莱公式。
凯莱公式简介
凯莱公式(Cayley`s formula)是组合数学和图论中的一个结论,它给出了告诉我们在
令
证明这里便不再详细讲述,如果有兴趣可以自己下去查。
相信当你知道了凯莱公式之后,这道题便可以轻松解决了,只需要将凯莱公式带入程序中满足就行了。
参考代码
#include<bits/stdc++.h>
#define int long long
#define Rint register int
#define fast_running ios::sync_with_stdio(false),std::cin.tie(0),std::cout.tie(0)
using namespace std;
signed main() {
fast_running;
int n, cnt = 0;
while (cin >> n && n != 0) {
++cnt;
cout << "Case " << cnt << ", N = " << n << ", # of different labelings = " << (int)(pow(n, n - 2)) << '\n';
//这里如果用 pow 函数需要强制类型转化,不然可能会用科学计数法输出
/*也可以这样:
int out = pow(n, n - 2);
cout << out << '\n';
*/
//当然也可以自己写一个 “pow”
}
return 0;
}
~ 完结撒花 ~