Advertisement
jeff69

Untitled

Feb 14th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.85 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int MX=1e5+6;
  4. bool vis[669];
  5. int n,f[MX],h[MX],g[MX],gud[MX];
  6. int main()
  7. {
  8. cin>>n;
  9. for(int i=1;i<=n;i++)
  10. scanf("%d",f+i);
  11. for(int i=1;i<=n;i++)
  12. {
  13. h[i]=h[f[i]]=f[i];
  14. if(g[f[i]])g[i]=g[f[i]];
  15. if(g[i])g[f[i]]=g[i];
  16. if(!g[f[i]])g[f[i]]=i;
  17. if(!g[i])g[i]=i;
  18. }
  19. int m=1;
  20. for(int i=1;i<n;i++)
  21. if(h[i]!=h[i+1])
  22. m=n;
  23. for(int i=1;i<=m;i++)
  24. {
  25. if(g[h[i]]!=i)
  26. {
  27. cout<<-1;return 0;
  28. }
  29. }
  30. for(int i=1;i<=n;i++)
  31. if(h[g[i]]!=f[i])
  32. {
  33. cout<<-1;return 0;
  34. }
  35. cout<<m<<endl;
  36. for(int i=1;i<=n;i++)
  37. printf("%d ",g[i]);
  38. cout<<endl;
  39. for(int i=1;i<=m;i++)
  40. printf("%d ",h[i]);
  41.  
  42.  
  43. return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement