| Task: | Graph Ordering |
| Sender: | Fredrik Ekholm |
| Submission time: | 2019-03-06 15:54:43 +0200 |
| Language: | C++ |
| Status: | READY |
| Result: | 7 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 7 |
| #2 | WRONG ANSWER | 0 |
| #3 | WRONG ANSWER | 0 |
| #4 | WRONG ANSWER | 0 |
| #5 | WRONG ANSWER | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.19 s | 1, 4, 5 | details |
| #2 | ACCEPTED | 0.19 s | 1, 5 | details |
| #3 | ACCEPTED | 0.09 s | 1, 5 | details |
| #4 | ACCEPTED | 0.11 s | 1, 5 | details |
| #5 | ACCEPTED | 0.14 s | 1, 5 | details |
| #6 | ACCEPTED | 0.02 s | 2, 3, 5 | details |
| #7 | ACCEPTED | 0.03 s | 2, 3, 5 | details |
| #8 | ACCEPTED | 0.02 s | 2, 3, 4, 5 | details |
| #9 | WRONG ANSWER | 0.01 s | 2, 3, 4, 5 | details |
| #10 | ACCEPTED | 0.01 s | 2, 3, 4, 5 | details |
| #11 | WRONG ANSWER | 0.01 s | 2, 3, 5 | details |
| #12 | ACCEPTED | 0.02 s | 2, 3, 5 | details |
| #13 | ACCEPTED | 0.03 s | 2, 3, 4, 5 | details |
| #14 | WRONG ANSWER | 0.02 s | 2, 3, 4, 5 | details |
| #15 | WRONG ANSWER | 0.03 s | 2, 3, 4, 5 | details |
| #16 | ACCEPTED | 0.03 s | 2, 3, 4, 5 | details |
| #17 | WRONG ANSWER | 0.01 s | 2, 3, 4, 5 | details |
| #18 | ACCEPTED | 0.03 s | 2, 3, 4, 5 | details |
| #19 | WRONG ANSWER | 0.02 s | 3, 4, 5 | details |
| #20 | WRONG ANSWER | 0.02 s | 3, 4, 5 | details |
| #21 | ACCEPTED | 0.03 s | 3, 4, 5 | details |
| #22 | WRONG ANSWER | 0.01 s | 3, 4, 5 | details |
| #23 | WRONG ANSWER | 0.03 s | 3, 5 | details |
| #24 | WRONG ANSWER | 0.02 s | 3, 5 | details |
| #25 | ACCEPTED | 0.01 s | 3, 5 | details |
| #26 | ACCEPTED | 0.01 s | 3, 5 | details |
| #27 | WRONG ANSWER | 0.02 s | 3, 5 | details |
| #28 | WRONG ANSWER | 0.19 s | 5 | details |
| #29 | WRONG ANSWER | 0.21 s | 5 | details |
| #30 | WRONG ANSWER | 0.22 s | 4, 5 | details |
| #31 | WRONG ANSWER | 0.21 s | 4, 5 | details |
| #32 | WRONG ANSWER | 0.22 s | 4, 5 | details |
| #33 | WRONG ANSWER | 0.23 s | 4, 5 | details |
| #34 | ACCEPTED | 0.23 s | 5 | details |
| #35 | ACCEPTED | 0.23 s | 5 | details |
| #36 | ACCEPTED | 0.22 s | 5 | details |
| #37 | ACCEPTED | 0.01 s | 1, 2, 3, 4, 5 | details |
| #38 | ACCEPTED | 0.02 s | 2, 3, 5 | details |
| #39 | ACCEPTED | 0.03 s | 2, 3, 5 | details |
| #40 | ACCEPTED | 0.02 s | 2, 3, 5 | details |
| #41 | ACCEPTED | 0.02 s | 1, 2, 3, 5 | details |
| #42 | ACCEPTED | 0.01 s | 2, 3, 5 | details |
| #43 | WRONG ANSWER | 0.02 s | 3, 4, 5 | details |
| #44 | WRONG ANSWER | 0.02 s | 3, 4, 5 | details |
| #45 | ACCEPTED | 0.02 s | 2, 3, 4, 5 | details |
| #46 | WRONG ANSWER | 0.01 s | 2, 3, 4, 5 | details |
| #47 | ACCEPTED | 0.02 s | 2, 3, 5 | details |
| #48 | WRONG ANSWER | 0.02 s | 3, 4, 5 | details |
| #49 | WRONG ANSWER | 0.03 s | 4, 5 | details |
Code
#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for(ll i = a; i < ll(b); ++i)
#define trav(a, x) for(auto& a : x)
#define all(x) x.begin(), x.end()
#define sz(x) (ll)(x).size()
typedef long long ll;
typedef pair<ll, ll> pii;
typedef vector<ll> vi;
void fail(){
cout<<"IMPOSSIBLE"<<endl;
exit(0);
}
vector<vi> e;
ll n,m;
ll dfsNumberCounter, dfsRoot, rootChildren;
vi dfs_low;
vi dfs_num;
vi dfs_parent;
vector<bool> articulation_vertex;
void articulationPointAndBridge(ll u) {
dfs_low[u] = dfs_num[u] = dfsNumberCounter++;
for (ll j = 0; j < (ll)e[u].size(); j++) {
ll v = e[u][j];
if (dfs_num[v] == -1) {
dfs_parent[v] = u;
if (u == dfsRoot) rootChildren++;
articulationPointAndBridge(v);
if (dfs_low[v] >= dfs_num[u])
articulation_vertex[u] = true;
if (dfs_low[v] > dfs_num[u])
dfs_low[u] = min(dfs_low[u], dfs_low[v]);
}
else if (v != dfs_parent[u])
dfs_low[u] = min(dfs_low[u], dfs_num[v]);
} }
ll furthest = -1;
ll maxArts = -1;
vector<bool> seen;
void getFurthestDfs(ll v, ll arts){
if(seen[v]) return;
seen[v] = true;
if(articulation_vertex[v]) arts++;
if(arts>=maxArts){
furthest = v;
maxArts = arts;
}
rep(i,0,e[v].size()) getFurthestDfs(e[v][i],arts);
}
ll getFurthest(ll v){
furthest = -1;
maxArts = -1;
seen.assign(n,false);
getFurthestDfs(v,0);
return furthest;
}
vi orderNum;
vector<bool> forbidden;
vi path;
bool pathFound = false;
void findPath(ll v){
if(seen[v]||forbidden[v]) return;
seen[v] = true;
// cout<<"findPath "<<v<<endl;
path.push_back(v);
if(orderNum[v]!=-1){
pathFound = true;
return;
}
rep(i,0,e[v].size()){
findPath(e[v][i]);
if(pathFound) return;
}
path.pop_back();
}
void connect(ll v){
forbidden.assign(n,false);
seen.assign(n,false);
path.clear();
pathFound = false;
findPath(v);
if(!pathFound) fail();
vi path1 = path;
rep(i,1,path1.size()) forbidden[path1[i]] = true;
seen.assign(n,false);
path.clear();
pathFound = false;
findPath(v);
if(!pathFound) fail();
vi path2 = path;
if(orderNum[path2.back()]<orderNum[path1.back()]) swap(path1,path2);
ll mn = orderNum[path1.back()]+1;
ll mx = orderNum[path2.back()]-1;
reverse(all(path1));
/*cout<<v+1<<": "<<endl;
cout<<"path1 ";
rep(i,0,path1.size()) cout<<path1[i]+1<<" ";
cout<<endl;
cout<<"path2 ";
rep(i,0,path2.size()) cout<<path2[i]+1<<" ";
cout<<endl;*/
vi randNums(path1.size()+path2.size()-2);
rep(i,0,randNums.size()) randNums[i] = mn+(rand()*(1ll<<31)+rand())%(mx-mn);
sort(all(randNums));
rep(i,1,path1.size()) orderNum[path1[i]] = randNums[i-1];
rep(i,1,path2.size()-1) orderNum[path2[i]] = randNums[i+path1.size()-1];
}
int main() {
cin.sync_with_stdio(0); cin.tie(0);
cin.exceptions(cin.failbit);
cin>>n>>m;
e.resize(n);
rep(i,0,m){
ll a,b;
cin>>a>>b;
--a; --b;
e[a].push_back(b);
e[b].push_back(a);
}
/*if(m==n-1){
ll s = -1;
rep(i,0,n){
if(e[i].size()>2) fail();
if(e[i].size()==1) s = i;
}
cout<<s+1<<" ";
ll l = s;
s = e[s][0];
while(e[s].size()!=1){
cout<<s+1<<" ";
rep(i,0,e[s].size()){
if(e[s][i]!=l){
l = s;
s = e[s][i];
break;
}
}
}
cout<<s+1<<endl;
return 0;
}*/
dfsNumberCounter = 0; dfs_num.assign(n, -1); dfs_low.assign(n, 0);
dfs_parent.assign(n, 0); articulation_vertex.assign(n, 0);
for (ll i = 0; i < n; i++)
if (dfs_num[i] == -1) {
dfsRoot = i; rootChildren = 0; articulationPointAndBridge(i);
articulation_vertex[dfsRoot] = (rootChildren > 1);
}
ll source = getFurthest(0);
ll sink = getFurthest(source);
/*cout<<source+1<<endl;
cout<<sink+1<<endl;
rep(i,0,n){
if(articulation_vertex[i]) cout<<i+1<<" ";
}
cout<<endl;*/
orderNum.assign(n,-1);
orderNum[source] = 0;
orderNum[sink] = 1e18;
rep(i,0,n){
if(orderNum[i]==-1){
connect(i);
}
}
vector<pii> p;
rep(i,0,n) p.emplace_back(orderNum[i],i);
sort(all(p));
rep(i,0,n){
cout<<p[i].second+1<<" ";//<<p[i].first<<endl;
}
cout<<endl;
}
Test details
Test 1
Group: 1, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 100000 99999 8326 74462 11810 58064 21677 73087 62986 25005 ... |
| correct output |
|---|
| 1 44159 25721 84659 90058 9960... |
| user output |
|---|
| 100000 55408 4224 23528 55621 ... Truncated |
Test 2
Group: 1, 5
Verdict: ACCEPTED
| input |
|---|
| 100000 99999 28990 31200 86271 56882 61089 18658 52422 57504 ... |
| correct output |
|---|
| 68068 86325 91398 75677 51068 ... |
| user output |
|---|
| 75520 37121 89333 44052 51784 ... Truncated |
Test 3
Group: 1, 5
Verdict: ACCEPTED
| input |
|---|
| 100000 99999 29378 80094 12282 29378 96138 29378 61870 29378 ... |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 4
Group: 1, 5
Verdict: ACCEPTED
| input |
|---|
| 100000 99999 97935 71091 9181 31715 73649 47675 45394 25464 ... |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 5
Group: 1, 5
Verdict: ACCEPTED
| input |
|---|
| 100000 99999 2897 55594 11759 89041 56061 8717 69672 73046 ... |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 6
Group: 2, 3, 5
Verdict: ACCEPTED
| input |
|---|
| 100 200 55 10 33 57 68 39 29 27 ... |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 7
Group: 2, 3, 5
Verdict: ACCEPTED
| input |
|---|
| 100 175 71 86 100 88 83 92 25 73 ... |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 8
Group: 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 100 200 26 58 49 25 66 20 20 85 ... |
| correct output |
|---|
| 1 2 86 60 34 92 23 4 44 89 76 ... |
| user output |
|---|
| 70 79 84 60 34 92 17 23 35 44 ... Truncated |
Test 9
Group: 2, 3, 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 100 195 19 28 63 48 1 57 1 20 ... |
| correct output |
|---|
| 12 97 18 74 36 10 78 50 61 95 ... |
| user output |
|---|
| IMPOSSIBLE |
Test 10
Group: 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 100 193 48 66 15 67 32 14 36 78 ... |
| correct output |
|---|
| 1 56 13 32 14 49 75 93 18 6 54... |
| user output |
|---|
| 11 96 76 73 94 9 95 20 65 68 1... Truncated |
Test 11
Group: 2, 3, 5
Verdict: WRONG ANSWER
| input |
|---|
| 100 195 47 68 57 61 45 17 80 61 ... |
| correct output |
|---|
| 57 20 83 41 25 33 60 91 59 7 7... |
| user output |
|---|
| IMPOSSIBLE |
Test 12
Group: 2, 3, 5
Verdict: ACCEPTED
| input |
|---|
| 100 185 43 78 76 99 78 39 83 61 ... |
| correct output |
|---|
| 78 43 32 88 26 28 64 81 7 72 2... |
| user output |
|---|
| 65 92 59 52 74 40 23 14 80 60 ... Truncated |
Test 13
Group: 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 99 132 96 16 18 89 98 50 66 26 ... |
| correct output |
|---|
| 1 12 45 71 97 22 35 9 60 27 20... |
| user output |
|---|
| 54 47 5 99 56 8 62 81 51 88 49... Truncated |
Test 14
Group: 2, 3, 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 98 144 25 6 30 34 58 25 31 41 ... |
| correct output |
|---|
| 32 7 92 1 63 86 87 14 90 17 81... |
| user output |
|---|
| IMPOSSIBLE |
Test 15
Group: 2, 3, 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 96 145 19 70 72 92 27 72 17 85 ... |
| correct output |
|---|
| 1 50 30 4 10 48 42 5 70 19 29 ... |
| user output |
|---|
| IMPOSSIBLE |
Test 16
Group: 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 96 158 79 74 41 70 8 5 73 90 ... |
| correct output |
|---|
| 7 59 44 27 1 30 49 28 80 52 15... |
| user output |
|---|
| 55 37 96 53 32 76 86 60 93 51 ... Truncated |
Test 17
Group: 2, 3, 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 96 142 95 35 67 89 91 70 48 21 ... |
| correct output |
|---|
| 13 20 81 33 1 51 19 69 16 85 6... |
| user output |
|---|
| IMPOSSIBLE |
Test 18
Group: 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 72 111 70 17 25 3 58 24 52 9 ... |
| correct output |
|---|
| 21 59 48 8 1 2 31 10 11 41 4 5... |
| user output |
|---|
| 46 38 29 6 72 55 25 28 3 12 66... Truncated |
Test 19
Group: 3, 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 988 1563 402 701 830 801 50 578 8 144 ... |
| correct output |
|---|
| 1 136 368 683 447 304 131 53 8... |
| user output |
|---|
| IMPOSSIBLE |
Test 20
Group: 3, 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 994 1555 171 541 66 915 330 350 494 251 ... |
| correct output |
|---|
| 1 164 205 151 951 797 4 654 14... |
| user output |
|---|
| IMPOSSIBLE |
Test 21
Group: 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 1000 2000 711 947 775 441 691 471 844 28 ... |
| correct output |
|---|
| 1 676 731 662 248 31 165 558 8... |
| user output |
|---|
| 312 988 909 327 231 867 848 11... Truncated |
Test 22
Group: 3, 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 1000 2000 811 889 873 984 83 52 144 511 ... |
| correct output |
|---|
| 60 909 522 568 40 77 181 441 8... |
| user output |
|---|
| IMPOSSIBLE |
Test 23
Group: 3, 5
Verdict: WRONG ANSWER
| input |
|---|
| 1000 1869 625 715 448 714 110 927 432 1000 ... |
| correct output |
|---|
| 224 326 221 30 76 475 666 694 ... |
| user output |
|---|
| IMPOSSIBLE |
Test 24
Group: 3, 5
Verdict: WRONG ANSWER
| input |
|---|
| 1000 1783 709 1 182 768 355 40 786 260 ... |
| correct output |
|---|
| 230 6 135 678 346 19 470 960 3... |
| user output |
|---|
| IMPOSSIBLE |
Test 25
Group: 3, 5
Verdict: ACCEPTED
| input |
|---|
| 1000 2000 92 876 273 598 287 535 526 972 ... |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 26
Group: 3, 5
Verdict: ACCEPTED
| input |
|---|
| 1000 1910 789 821 553 740 889 527 488 730 ... |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 27
Group: 3, 5
Verdict: WRONG ANSWER
| input |
|---|
| 1000 1608 910 416 503 898 928 14 412 903 ... |
| correct output |
|---|
| 140 404 739 563 63 794 623 948... |
| user output |
|---|
| IMPOSSIBLE |
Test 28
Group: 5
Verdict: WRONG ANSWER
| input |
|---|
| 100000 198666 5659 89691 91040 53375 96642 56177 28768 57001 ... |
| correct output |
|---|
| 45598 74078 1039 83702 16344 8... |
| user output |
|---|
| IMPOSSIBLE |
Test 29
Group: 5
Verdict: WRONG ANSWER
| input |
|---|
| 100000 197194 41636 91770 63018 23827 39207 93713 67765 47715 ... |
| correct output |
|---|
| 79054 61855 53279 55546 60860 ... |
| user output |
|---|
| IMPOSSIBLE |
Test 30
Group: 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 100000 199985 13674 42886 51349 6858 78502 18751 13628 65936 ... |
| correct output |
|---|
| 17857 81664 4369 61462 79754 8... |
| user output |
|---|
| IMPOSSIBLE |
Test 31
Group: 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 100000 200000 27666 33166 7161 81452 73134 30281 5106 29308 ... |
| correct output |
|---|
| 76869 5635 23236 12666 61633 8... |
| user output |
|---|
| IMPOSSIBLE |
Test 32
Group: 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 100000 200000 62814 54729 98407 26888 91808 70132 58916 49730 ... |
| correct output |
|---|
| 19788 11202 3496 24237 68564 5... |
| user output |
|---|
| IMPOSSIBLE |
Test 33
Group: 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 100000 200000 2299 91653 21125 75544 54029 94067 86513 45051 ... |
| correct output |
|---|
| 1 20339 9304 40427 67694 95656... |
| user output |
|---|
| IMPOSSIBLE |
Test 34
Group: 5
Verdict: ACCEPTED
| input |
|---|
| 100000 200000 34688 93668 78127 18902 55150 33116 273 88797 ... |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 35
Group: 5
Verdict: ACCEPTED
| input |
|---|
| 100000 200000 21026 14630 5605 59639 25604 78683 55713 70513 ... |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 36
Group: 5
Verdict: ACCEPTED
| input |
|---|
| 100000 200000 63190 73606 52072 54105 22092 31495 9189 37924 ... |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 37
Group: 1, 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 2 1 2 1 |
| correct output |
|---|
| 1 2 |
| user output |
|---|
| 2 1 |
Test 38
Group: 2, 3, 5
Verdict: ACCEPTED
| input |
|---|
| 7 9 1 2 1 3 2 3 1 4 ... |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 39
Group: 2, 3, 5
Verdict: ACCEPTED
| input |
|---|
| 9 12 1 2 2 3 3 1 4 5 ... |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 40
Group: 2, 3, 5
Verdict: ACCEPTED
| input |
|---|
| 5 5 4 2 4 3 2 1 3 1 ... |
| correct output |
|---|
| 4 2 3 1 5 |
| user output |
|---|
| 3 4 2 1 5 |
Test 41
Group: 1, 2, 3, 5
Verdict: ACCEPTED
| input |
|---|
| 4 3 1 2 3 2 4 2 |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 42
Group: 2, 3, 5
Verdict: ACCEPTED
| input |
|---|
| 17 30 4 1 3 14 6 16 13 6 ... |
| correct output |
|---|
| 7 8 11 15 1 2 9 3 14 13 5 10 1... |
| user output |
|---|
| 13 3 9 2 5 14 10 17 12 16 6 4 ... |
Test 43
Group: 3, 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 992 1712 377 709 847 640 261 902 761 693 ... |
| correct output |
|---|
| 870 1 925 928 950 257 766 520 ... |
| user output |
|---|
| IMPOSSIBLE |
Test 44
Group: 3, 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 990 1672 305 445 800 155 365 779 824 247 ... |
| correct output |
|---|
| 108 461 160 696 895 655 376 21... |
| user output |
|---|
| IMPOSSIBLE |
Test 45
Group: 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 99 169 35 32 97 43 22 62 33 7 ... |
| correct output |
|---|
| 19 70 62 22 54 78 25 14 3 81 1... |
| user output |
|---|
| 80 16 67 93 89 2 95 85 38 23 5... Truncated |
Test 46
Group: 2, 3, 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 99 164 62 73 19 35 55 92 79 91 ... |
| correct output |
|---|
| 21 25 64 90 17 15 89 95 70 33 ... |
| user output |
|---|
| IMPOSSIBLE |
Test 47
Group: 2, 3, 5
Verdict: ACCEPTED
| input |
|---|
| 53 68 7 46 51 14 3 18 8 40 ... |
| correct output |
|---|
| 32 30 38 33 27 12 8 20 2 34 45... |
| user output |
|---|
| 41 39 3 18 29 48 26 45 34 23 1... Truncated |
Test 48
Group: 3, 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 996 1902 661 201 19 613 895 438 180 32 ... |
| correct output |
|---|
| 220 795 198 239 40 164 773 834... |
| user output |
|---|
| IMPOSSIBLE |
Test 49
Group: 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 6110 11528 3366 4718 3226 2188 5022 1186 3205 5349 ... |
| correct output |
|---|
| 1 2527 2211 554 4201 4522 1494... |
| user output |
|---|
| IMPOSSIBLE |
