#include <bits/stdc++.h>
#pragma GCC target ("avx2,fma")
#pragma GCC optimize ("Ofast")
#pragma GCC optimize ("unroll-loops")
#define ll long long
#define ld long double
#define endl '\n'
#define st first
#define nd second
#define pb push_back
#define sz(x) (int)(x).size()
#define all(x) (x).begin(), (x).end()
#define FOR(i,l,r) for(int i=(l);i<=(r);i++)
#define ROF(i,r,l) for(int i=(r);i>=(l);i--)
using namespace std;
int inf=1000000007;
ll infl=1000000000000000007;
const ll mod=1000000007;
#ifdef LOCAL
auto&operator<<(auto&o,pair<auto,auto>p){return o<<"("<<p.first<<", "<<p.second<<")";}
auto operator<<(auto&o,auto x)->decltype(x.end(),o){o<<"{";int i=0;for(auto e:x)o<<","+!i++<<e;return o<<"}";}
#define debug(X...)cerr<<"["#X"]: ",[](auto...$){((cerr<<$<<"; "),...)<<endl;}(X)
#else
#define debug(...){}
#endif
const int N=1007;
vector<int>G[N];
int ile[N],odw[N];
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int tt;
cin>>tt;
while(tt--)
{
int n;
cin>>n;
FOR(i,1,n-1)
{
int a,b;
cin>>a>>b;
G[a].pb(b);
G[b].pb(a);
}
vector<int>res={n+1};
vector<int>pp(n,0);
FOR(i,0,n-1) pp[i]=i+1;
while(true)
{
priority_queue<pair<int,int>>Q;
FOR(i,1,n)
{
odw[i]=0;
ile[i]=sz(G[i]);
if(ile[i]==1) Q.push({-pp[i-1],i});
}
vector<int>c;
FOR(j,1,n-2)
{
int v=Q.top().nd,p;
Q.pop();
odw[v]=1;
for(auto u:G[v]) if(!odw[u]) p=u;
c.pb(pp[p-1]);
ile[p]--;
if(ile[p]==1) Q.push({-pp[p-1],p});
}
res=min(res,c);
if(!next_permutation(all(pp))) break;
}
for(auto x:res) cout<<x<<" ";
cout<<endl;
FOR(i,1,n) G[i].clear();
}
return 0;
}
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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | #include <bits/stdc++.h> #pragma GCC target ("avx2,fma") #pragma GCC optimize ("Ofast") #pragma GCC optimize ("unroll-loops") #define ll long long #define ld long double #define endl '\n' #define st first #define nd second #define pb push_back #define sz(x) (int)(x).size() #define all(x) (x).begin(), (x).end() #define FOR(i,l,r) for(int i=(l);i<=(r);i++) #define ROF(i,r,l) for(int i=(r);i>=(l);i--) using namespace std; int inf=1000000007; ll infl=1000000000000000007; const ll mod=1000000007; #ifdef LOCAL auto&operator<<(auto&o,pair<auto,auto>p){return o<<"("<<p.first<<", "<<p.second<<")";} auto operator<<(auto&o,auto x)->decltype(x.end(),o){o<<"{";int i=0;for(auto e:x)o<<","+!i++<<e;return o<<"}";} #define debug(X...)cerr<<"["#X"]: ",[](auto...$){((cerr<<$<<"; "),...)<<endl;}(X) #else #define debug(...){} #endif const int N=1007; vector<int>G[N]; int ile[N],odw[N]; signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int tt; cin>>tt; while(tt--) { int n; cin>>n; FOR(i,1,n-1) { int a,b; cin>>a>>b; G[a].pb(b); G[b].pb(a); } vector<int>res={n+1}; vector<int>pp(n,0); FOR(i,0,n-1) pp[i]=i+1; while(true) { priority_queue<pair<int,int>>Q; FOR(i,1,n) { odw[i]=0; ile[i]=sz(G[i]); if(ile[i]==1) Q.push({-pp[i-1],i}); } vector<int>c; FOR(j,1,n-2) { int v=Q.top().nd,p; Q.pop(); odw[v]=1; for(auto u:G[v]) if(!odw[u]) p=u; c.pb(pp[p-1]); ile[p]--; if(ile[p]==1) Q.push({-pp[p-1],p}); } res=min(res,c); if(!next_permutation(all(pp))) break; } for(auto x:res) cout<<x<<" "; cout<<endl; FOR(i,1,n) G[i].clear(); } return 0; } |
English