BZOJ 2467 [中山市选2010]生成树(组合数学)
【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=2467
【题目大意】
有一种图形叫做五角形圈。一个五角形圈的中心有1个由n个顶点和n条边组成的圈。
在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形。
这些五角形只在五角形圈的中心的圈上有公共的顶点。
求该图的最小生成树。
【题解】
Matrix-Tree定理超时,回来找规律,我们发现对于每个五边形来说,
它至少要删去一条边,所以每增加一个答案就乘5,剩余部分是一个环套外向树,
某个五边形要多删去一条边,而对于这个五边形来说,删去的两个边有一条必须是多边形上的,
因此基础答案是4。
【代码】
#include <cstdio> #include <algorithm> using namespace std; int n,ans,T; int main(){ scanf("%d",&T); while(T--){ scanf("%d",&n); ans=n<<2; for(int i=1;i<n;i++)ans=(ans*5)%2007; printf("%d\n",ans); }return 0; }
愿你出走半生,归来仍是少年