pat1067 Sort with Swap(0,*)

来源:互联网 发布:淘宝达人互动视频教程 编辑:程序博客网 时间:2024/06/06 08:57
#include<cstdio>#include<iostream>#include<algorithm>#include<vector>#include<queue>#include<string>#include<cstring>#include<cmath>#include<map>#include<stack>#define N 100005#define ll long longusing namespace std;vector<pair<int,int> >v;int a[N],pos[N],vis[N];int main(){int n,i,j,ans;while(scanf("%d",&n)!=EOF){ans = 0;for(i = 0;i<n;i++){scanf("%d",&a[i]);pos[a[i]] = i;}for(i = 0;i<n;i++){if(!vis[i]&&a[i]!=i){vis[i] = 1;j = pos[i];while(j!=i){vis[j] = 1;j = pos[j];ans++;}ans+=2;}}if(a[0]!=0)ans-=2;printf("%d\n",ans);}    return 0;}

0 0
原创粉丝点击