#37928: 為什麼這樣不行


samlin961112@gmail.com (林哲甫)

學校 : 新北市私立南山高級中學
編號 : 220506
來源 : [219.70.213.92]
最後登入時間 :
2024-10-21 22:34:09
c291. APCS 2017-0304-2小群體 -- 2017年3月APCS | From: [219.70.213.92] | 發表日期 : 2023-10-19 00:46

#include <bits/stdc++.h>
using namespace std;
int n;
void dfs(vector<int> a,vector<bool> &m,int i){
    if(m[a[i]]){return;}
    m[a[i]]=true;
    dfs(a,m,a[i]);
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>n;
    vector<int> a(n);
    vector<bool> m(n,false);
    int ans=0;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    for(int i=0;i<n;i++){
        if(m[i]==false){
            ans++;
            m[i]=true;
            dfs(a,m,i);
        }
    }
    cout<<ans;
}
 
#37929: Re: 為什麼這樣不行


samlin961112@gmail.com (林哲甫)

學校 : 新北市私立南山高級中學
編號 : 220506
來源 : [219.70.213.92]
最後登入時間 :
2024-10-21 22:34:09
c291. APCS 2017-0304-2小群體 -- 2017年3月APCS | From: [219.70.213.92] | 發表日期 : 2023-10-19 00:52

#include 
using namespace std;
int n;
void dfs(vector a,vector &m,int i){
    if(m[a[i]]){return;}
    m[a[i]]=true;
    dfs(a,m,a[i]);
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>n;
    vector a(n);
    vector m(n,false);
    int ans=0;
    for(int i=0;i>a[i];
    }
    for(int i=0;i

改成這樣就AC了,但不知道為什麼會有出界情形

void dfs(vector<int> &a, vector<bool> &m, int i) {

if (m[i]) { return; }

m[i] = true;

if (i < a.size()) { dfs(a, m, a[i]); } //這一行

}

 
ZeroJudge Forum