Orden de matriz (orden de índice)

Título: P1327 Clasificación de secuencia

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;

int a[100005];
int idx[100005];
bool vis[100005];

bool cmp(int i, int j) {
    
    
    return a[i] < a[j];
}

int dfs(int cur, int cnt) {
    
    
    vis[cur] = 1;
    ++cnt;
    if (!vis[idx[cur]])
        return dfs(idx[cur], cnt);
    else 
        return cnt;
}

int main()
{
    
    
    int n;
    cin >> n;
    for (int i = 0; i < n; ++i) {
    
    
        scanf("%d", &a[i]);
        idx[i] = i;
    }
    sort(idx, idx+n, cmp);
    int ans = 0;
    for (int i = 0; i < n; ++i) {
    
    
        if (!vis[i])
            ans += dfs(i, 0)-1;
    }
    cout << ans << endl;
    system("pause");
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/w112348/article/details/111018499
Recomendado
Clasificación