Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- const int MX=1e5+6;
- bool vis[669];
- int n,f[MX],h[MX],g[MX],gud[MX];
- int main()
- {
- cin>>n;
- for(int i=1;i<=n;i++)
- scanf("%d",f+i);
- for(int i=1;i<=n;i++)
- {
- h[i]=h[f[i]]=f[i];
- if(g[f[i]])g[i]=g[f[i]];
- if(g[i])g[f[i]]=g[i];
- if(!g[f[i]])g[f[i]]=i;
- if(!g[i])g[i]=i;
- }
- int m=1;
- for(int i=1;i<n;i++)
- if(h[i]!=h[i+1])
- m=n;
- for(int i=1;i<=m;i++)
- {
- if(g[h[i]]!=i)
- {
- cout<<-1;return 0;
- }
- }
- for(int i=1;i<=n;i++)
- if(h[g[i]]!=f[i])
- {
- cout<<-1;return 0;
- }
- cout<<m<<endl;
- for(int i=1;i<=n;i++)
- printf("%d ",g[i]);
- cout<<endl;
- for(int i=1;i<=m;i++)
- printf("%d ",h[i]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement