Pagini recente » Cod sursa (job #1421082) | Cod sursa (job #501597) | Cod sursa (job #852658) | Cod sursa (job #1242704) | Cod sursa (job #2408598)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("arbore4.in");
ofstream g("arbore4.out");
const int maxn = 1e5+5, mod = 666013;
vector <int> v[maxn];
int n, i, x, y;
int h[maxn];
int heights(int x) {
int sum = 1;
for(auto u : v[x]) {
sum += heights(u);
}
return h[x] = sum;
}
int solve(int x, int lft) {
if(h[x] == 1) { return lft; }
int ans = 0, now = 1, i;
for(lft = lft - 1; lft >= h[x] - 1; lft --) {
now = 1; i = lft;
for(auto u : v[x]) {
now *= solve(u, i); now %= mod;
i -= h[u];
}
ans += now; ans %= mod;
}
return ans;
}
int main()
{
f >> n;
for(i = 1; i <= n - 1; i ++) {
f >> x >> y; if(x > y) { swap(x, y); }
v[x].push_back(y);
}
heights(1);
g << solve(1, n);
f.close(); g.close();
return 0;
}