Cod sursa(job #466255)

Utilizator SmarandaMaria Pandele Smaranda Data 26 iunie 2010 12:35:00
Problema Colorare3 Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 2 Marime 0.74 kb
#include<stdio.h>
#define MODULLO 1000000007
char a[100001][100001];
long n,k;
long af;
long q[100001];
char viz[100001];
int main()
{
	long i,x,y,p,u,vu,nviz;
	
	freopen("colorare3.in","r",stdin);
	freopen("colorare3.out","w",stdout);
	
	scanf("%ld%ld",&n,&k);
	af=1;
	for (i=1;i<n;i++)	
	{
		scanf("%ld%ld",&x,&y);
		a[x][y]=1;
		a[y][x]=1;
	}
	p=1;
	viz[1]=1;
	u=1;
	q[p]=1;
	while (p<=u)
	{
		x=q[p];
		nviz=0;
		vu=u;
		for (i=1;i<=n;i++)
			{
				if (viz[i]==1 && a[x][i]==1)
					nviz++;
				else
					if (a[x][i]==1 && viz[i]==0)
					{
						q[++u]=i;
						viz[i]=1;
					}
			}
		for (i=1;i<=u-vu;i++)
		{
			af=(af*   (k-nviz-i+1)%MODULLO) % MODULLO;
		}
	   p++;
	}
	printf("%ld\n",af);
	return 0;
}