Not Assigning

Problem - 1627C - Codeforces

AC代码:

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#include <iostream>
#include <queue>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <string>
#include <cctype>
#include <map>
#include <vector>
#include <set>
#include <stack>
#include <numeric>
#include <iomanip>
#include <functional>
using namespace std;
#define lowbit(x) ((x) & -(x))
#define IOS1 ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
#define IOS2 ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
typedef vector<int> vi;
typedef vector<long long> vll;
typedef vector<char> vc;
template<class T> T gcd(T a, T b) { return b ? gcd(b, a % b) : a; }
template<class T> T lcm(T a, T b) { return a / gcd(a, b) * b; }
const int INF = 0x3f3f3f3f;
const int mod = 1000000007;

void solve() {
	int n;
	cin >> n;
	vector<vector<pair<int, int>>> a(n);
	for (int i = 0; i < n - 1; i++) {
		int u, v;
		cin >> u >> v;
		u--;
		v--;
		a[u].emplace_back(v, i);
		a[v].emplace_back(u, i);
	}
	vector<int> ans(n - 1);
	for (int i = 0; i < n; i++) {
		if (a[i].size() > 2) {
			cout << "-1\n";
			return;
		}
	}
	int x = 0;
	while (a[x].size() == 2) {
		x++;
	}
	ans[a[x][0].second] = 2;
	int y = a[x][0].first;
	int cur = 2;
	while (a[y].size() == 2) {
		int t = x == a[y][0].first;
		cur = 5 - cur;
		ans[a[y][t].second] = cur;
		x = a[y][t].first;
		swap(x, y);
	}
	for (int i = 0; i < n - 1; i++) {
		cout << ans[i] << " \n"[i == n - 2];
	}
}

int main() {
	IOS1;
	//IOS2;
	int __t = 1;
	cin >> __t;
	for (int _t = 1; _t <= __t; _t++) {
		solve();
	}
	return 0;
}
/*

*/

上一篇:下载win10正版镜像文件


下一篇:并查集模板