http://acm.nyist.net/JudgeOnline/problem.php?pid=127
分析:cayley定理:即过n个有标志顶点的树的数目等于n^(n-2)。百科
#include <iostream>
#include <cstdio>
using namespace std;
const int NM=10003;
int main()
{
int j,T,ans,num;
scanf("%d",&T);
while(T--)
{
scanf("%d",&num);
if(num==2)
{
printf("1\n");
continue;
}
ans=num;
for(j=2;j<=num-2;j++)
{
ans*=num;
ans%=NM;
}
printf("%d\n",ans);
}
return 0;
}
http://acm.nyist.net/JudgeOnline/problem.php?pid=170
分析:只需找出度为1 的点即可,在这些点间(两两建立)建立辅助光纤
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int NM=10005;
int dre[NM];
int main()
{
int i,x,y,n,ans;
while(scanf("%d",&n)!=EOF)
{
memset(dre,0,sizeof(dre));
for(i=1;i<n;i++)
{
scanf("%d%d",&x,&y);
dre[x]++;
dre[y]++;
}
ans=0;
for(i=1;i<=NM;i++)
{
if(dre[i]==1)
ans++;
}
printf("%d\n",(ans+1)/2); //
}
return 0;
}