#include <algorithm>
#include <cstdio>
#include <queue>
#include <set>
#include <vector>
using namespace std;
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n) FOR(i,0,n)
#define VAR(v,w) __typeof(w) v=(w)
#define PB push_back
#define ALL(c) (c).begin(),(c).end()
#define SIZE(c) ((int)(c).size())
#define MP make_pair
#define SD second
#define INT(x) int x; scanf("%d", &x)
typedef pair<int,int> PII;
typedef vector<int> VI;
void oneCase() {
INT(n);
vector<set<int> > g0(n);
REP(i,n-1) {
INT(a);
INT(b);
--a;
--b;
g0[a].insert(b);
g0[b].insert(a);
}
VI p;
REP(i,n) p.PB(i);
VI r = VI(1, n);
do {
VAR(g,g0);
priority_queue<PII> q;
REP(i,n) if (SIZE(g[i]) == 1) q.push(MP(-p[i], i));
VI c;
REP(i,n-2) {
int v = q.top().SD;
q.pop();
int w = *g[v].begin();
c.PB(p[w]);
g[w].erase(v);
if (SIZE(g[w]) == 1) q.push(MP(-p[w], w));
}
r = min(r, c);
} while (next_permutation(ALL(p)));
REP(i,n-2) {
if (i) printf(" ");
printf("%d", r[i] + 1);
}
printf("\n");
}
int main() {
INT(t);
REP(tt,t) oneCase();
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | #include <algorithm> #include <cstdio> #include <queue> #include <set> #include <vector> using namespace std; #define FOR(i,a,b) for(int i=(a);i<(b);++i) #define REP(i,n) FOR(i,0,n) #define VAR(v,w) __typeof(w) v=(w) #define PB push_back #define ALL(c) (c).begin(),(c).end() #define SIZE(c) ((int)(c).size()) #define MP make_pair #define SD second #define INT(x) int x; scanf("%d", &x) typedef pair<int,int> PII; typedef vector<int> VI; void oneCase() { INT(n); vector<set<int> > g0(n); REP(i,n-1) { INT(a); INT(b); --a; --b; g0[a].insert(b); g0[b].insert(a); } VI p; REP(i,n) p.PB(i); VI r = VI(1, n); do { VAR(g,g0); priority_queue<PII> q; REP(i,n) if (SIZE(g[i]) == 1) q.push(MP(-p[i], i)); VI c; REP(i,n-2) { int v = q.top().SD; q.pop(); int w = *g[v].begin(); c.PB(p[w]); g[w].erase(v); if (SIZE(g[w]) == 1) q.push(MP(-p[w], w)); } r = min(r, c); } while (next_permutation(ALL(p))); REP(i,n-2) { if (i) printf(" "); printf("%d", r[i] + 1); } printf("\n"); } int main() { INT(t); REP(tt,t) oneCase(); } |
English