Cod sursa(job #2249413)

Utilizator agrtAndreea G agrt Data 29 septembrie 2018 20:01:38
Problema Zvon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#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;
}