Pagini recente » Cod sursa (job #51742) | Cod sursa (job #807085) | Cod sursa (job #190476) | Cod sursa (job #690217) | Cod sursa (job #2249413)
#include <fstream>
#include <iostream>
#include <vector>
#include <queue>
#include <utility>
using namespace std;
int main(int argc, char** argv) {
ifstream fi("zvon.in");
ofstream fo("zvon.out");
int teste;
int angajati;
fi >> teste;
for (int i = 0; i < teste; ++i) {
fi >> angajati;
if (angajati > 1) {
int x, y;
vector<int> angs[angajati + 1];
for (int j = 0; j < angajati - 1; ++j) {
fi >> x >> y;
angs[x - 1].push_back(y - 1);
}
queue< pair<int, int> > order;
for (int j = 0; j < angajati; j++) {
for (size_t k = 0; k < angs[j].size(); k++) {
for (size_t q = k + 1; q < angs[j].size(); q++) {
if (angs[angs[j][q]].size() > angs[angs[j][k]].size()) {
int aux = angs[j][q];
angs[j][q] = angs[j][k];
angs[j][k] = aux;
}
}
}
}
order.push(make_pair(0, 0));
while (1) {
pair<int, int> x = order.front();
order.pop();
for (unsigned int vec = 0; vec < angs[x.first].size(); vec++)
order.push(make_pair(angs[x.first][vec], x.second + 1 + vec));
if (order.empty()) {
fo << x.second << "\n";
break;
}
}
} else {
fo << "0\n" << flush;
}
}
return 0;
}