#30404: 雖然AC,但希望有人能幫我精簡中間那段


ruan950222@gmail.com (Justin Ruan)

學校 : 不指定學校
編號 : 164061
來源 : [123.194.201.104]
最後登入時間 :
2022-05-19 22:01:25
c291. APCS 2017-0304-2小群體 -- 2017年3月APCS | From: [123.194.201.104] | 發表日期 : 2022-05-19 15:37

#include<iostream>
#include<vector>
using namespace std;

int main(){
    int n, m, k, j = 0;
    cin>>n;
    bool a[n];
    int b[n];
    for(int i = 0; i<n; i++) cin>>b[i];
    for(int i = 0; i<n; i++) a[i] = false;
    for(int i = 0; i<n; i++){
        if(a[i]) continue;
        a[i] = true;
        k = b[i];
        m = a[b[i]];
        a[b[i]] = true;
        while(!m){
            a[b[k]] = true;
            k = b[k];
            m = a[b[k]];
        }
        j++;
    }
    cout<<j;
    j = 0;
}

 

 
#30421: Re: 雖然AC,但希望有人能幫我精簡中間那段


chen199940@gmail.com (CGIBE)

學校 : 國立臺中科技大學
編號 : 179887
來源 : [59.126.118.193]
最後登入時間 :
2024-04-01 11:43:58
c291. APCS 2017-0304-2小群體 -- 2017年3月APCS | From: [36.231.221.169] | 發表日期 : 2022-05-20 14:24

#include
#include
using namespace std;

int main(){
    int n, m, k, j = 0;
    cin>>n;
    bool a[n];
    int b[n];
    for(int i = 0; i>b[i];
    for(int i = 0; i    for(int i = 0; i
        if(a[i]) continue;
        a[i] = true;
        k = b[i];
        m = a[b[i]];
        a[b[i]] = true;
        while(!m){
            a[b[k]] = true;
            k = b[k];
            m = a[b[k]];
        }
        j++;
    }
    cout<    j = 0;
}

 

#include <iostream>
using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n,m,j=0;
    cin>>n;
    int a[n]={0},b[n];
    for(int i=0;i<n;i++)cin>>b[i];
    for(int i=0;i<n;i++){
        if(!a[i]){
            m=i;
            while(!a[m]){
            a[m]++;
            m=b[m];
            }
            j++;
        }
    }
    cout<<j;
    return 0;
}

稍微參考修改一下...執行效率蠻高了

 
ZeroJudge Forum