松鼠排序(并查集)

简介: 松鼠排序(并查集)

松鼠排序


题目描述


松鼠宝宝有一排n个大小不一的坚果,松鼠宝宝想把坚果从小到大排序,每次他会选择两个坚果a和b每次花费1点力气把这两个坚果交换,爱动脑筋的松鼠宝宝想知道他排完这n个坚果一共需要花费的最少力气是多少?


输入描述:


第一行一个整数n代表坚果数


接下来一行n个整数代表每个坚果的大小(每个坚果大小都不一样,即大小为1-n的一个排列)


1<=n<=1e5


坚果大小x,1<=x<=n


输出描述:


一行输出代表松鼠宝宝花费的最小力气


示例1


输入


3

3 2 1


输出


1


#include<bits/stdc++.h>
using namespace std;
int a[111000];
int main()
{
  int n,t=0,s=0,u,v;
  cin>>n;
  for(int i=1;i<=n;i++)
  cin>>a[i];
    for(int i=1;i<=n;i++)
    {
        if(a[i]!=i)
        {
            while(a[i]!=i)
            {
                swap(a[i],a[a[i]]);
                s++;
            }
        }
    }
  cout<<s;
  return 0;
}

目录
相关文章
|
5月前
969.煎饼排序
969.煎饼排序
|
5月前
|
算法 搜索推荐 数据可视化
【漫画算法】插入排序:插入宝石的传说
【漫画算法】插入排序:插入宝石的传说
|
5月前
|
搜索推荐
【海贼王的数据航海】排序——直接选择排序|堆排序
【海贼王的数据航海】排序——直接选择排序|堆排序
23 0
|
5月前
|
搜索推荐
【海贼王的数据航海】排序——概念|直接插入排序|希尔排序
【海贼王的数据航海】排序——概念|直接插入排序|希尔排序
28 0
|
6月前
leetcode-969:煎饼排序
leetcode-969:煎饼排序
45 0
|
6月前
|
机器学习/深度学习
数据结构实验之排序四:寻找大富翁
数据结构实验之排序四:寻找大富翁
|
搜索推荐
LeetCode-969 煎饼排序
LeetCode-969 煎饼排序
|
搜索推荐 算法
【排序算法 上】带你手撕常见排序 (插入,希尔,选择,堆排序) (动图详解)
【排序算法 上】带你手撕常见排序 (插入,希尔,选择,堆排序) (动图详解)
106 0
【排序算法 上】带你手撕常见排序 (插入,希尔,选择,堆排序) (动图详解)
[leetcode 324] 摆动排序 II 思维+排序
[leetcode 324] 摆动排序 II 思维+排序
77 0
|
算法 程序员 索引
【算法合集】学习算法第二天(二分与排序篇)
哈喽,大家好,我是程序猿追,通过上一篇算法文的私信,有小伙伴留言说,什么时候更新呀?这不?今天它就来了。
122 0
【算法合集】学习算法第二天(二分与排序篇)