Pagini recente » Profil IulianOleniuc | Cod sursa (job #3179570) | Cod sursa (job #1120676) | Cod sursa (job #2887078) | Cod sursa (job #941025)
Cod sursa(job #941025)
#include <fstream>
using namespace std;
const int MAX_N = 100005;
const int Mod = 1000000007;
int N, K, Degree[MAX_N], A[MAX_N], Solution;
void Preprocess() {
A[0] = 1;
for (int i = 1; i <= N; ++i)
A[i] = (1LL * A[i - 1] * (K - i)) % Mod;
}
void Solve() {
Preprocess();
Solution = 1;
if (Degree[1] > K) {
Solution = 0;
} else {
for (int i = K - Degree[1] + 1; i <= K; ++i)
Solution = (1LL * Solution * i) % Mod;
}
for (int i = 2; i <= N; ++i) {
if (Degree[i] > K)
Solution = 0;
else
Solution = (1LL * Solution * A[Degree[i] - (i != 1 ? 1 : 0)]) % Mod;
}
}
void Read() {
ifstream in("colorare3.in");
in >> N >> K;
for (int i = 1; i < N; ++i) {
int x, y; in >> x >> y;
++Degree[x]; ++Degree[y];
}
in.close();
}
void Print() {
ofstream out("colorare3.out");
out << Solution << "\n";
out.close();
}
int main() {
Read();
Solve();
Print();
return 0;
}