Task: | Distances |
Sender: | oleh1421 |
Submission time: | 2021-01-30 15:40:49 +0200 |
Language: | C++ (C++11) |
Status: | READY |
Result: | 0 |
group | verdict | score |
---|---|---|
#1 | TIME LIMIT EXCEEDED | 0 |
#2 | TIME LIMIT EXCEEDED | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | TIME LIMIT EXCEEDED | -- | 1, 2 | details |
#2 | TIME LIMIT EXCEEDED | -- | 2 | details |
Code
//#pragma GCC optimize("Ofast") //#pragma GCC optimize("unroll-loops") //#pragma GCC target("avx") #include <bits/stdc++.h> typedef long long ll; #define endl '\n' using namespace std; const int N=110; int dist[N][N]; vector<int>g[N]; void dfs(int v,int pr,int root,int cur){ dist[root][v]=cur; for (int to:g[v]){ if (to!=pr){ dfs(to,v,root,cur+1); } } } int p[N]; mt19937 rnd(time(NULL)); double random_double(){ return rnd()%1000000001/1000000000.0; } void solve(){ int n;cin>>n; for (int i=0;i<=n;i++) g[i].clear(); for (int i=1;i<n;i++){ int a,b;cin>>a>>b; g[a].push_back(b); g[b].push_back(a); } for (int i=1;i<=n;++i){ dfs(i,0,i,0); } for (int i=1;i<=n;i++) p[i]=i; random_shuffle(p+1,p+n+1); int f=0; for (int i=1;i<n;i++) f=max(f,dist[p[i]][p[i+1]]); int cnt=0; for (double temp=2000.0;temp>=0.0001;temp*=0.99998){ cnt++; int l=rnd()%n+1; int r=rnd()%n+1; if (l>r) swap(l,r); reverse(p+l,p+r+1); int nw=0; for (int i=1;i<n;i++) nw=max(nw,dist[p[i]][p[i+1]]); double delta=nw-f; if (delta<0.0 || exp(-delta/temp)<random_double()){ nw=f; } else { reverse(p+l,p+r+1); } } // cout<<cnt<<endl; // if (f>3) exit(1); for (int i=1;i<=n;i++) cout<<p[i]<<" "; cout<<endl; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); int tt;cin>>tt; while (tt--){ solve(); } return 0; } //1 2 3 3 2 1 //1 (1) 3 (1) 5 6 //6 7 8 //1 2 3 4 5 6
Test details
Test 1
Group: 1, 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
100 8 5 2 2 3 3 7 ... |
correct output |
---|
1 8 2 5 6 7 3 4 1 7 2 8 3 6 4 5 1 4 6 2 7 5 8 3 1 8 3 2 4 7 6 5 1 6 4 7 5 2 3 8 ... |
user output |
---|
(empty) |
Test 2
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
100 100 37 59 81 37 44 81 ... |
correct output |
---|
1 99 82 81 59 5 71 55 17 24 13... |
user output |
---|
(empty) |