#24273: 現在那兩題變成記憶體區段錯誤了@@


angus.93321@gmail.com (bluemoon0321)

學校 : 國立科學工業園區實驗高級中學
編號 : 139711
來源 : [114.136.48.221]
最後登入時間 :
2021-08-21 11:35:29
a445. 新手訓練系列- 我的朋友很少 -- 新手訓練系列 ~ 4 | From: [220.137.83.23] | 發表日期 : 2021-02-02 13:36

#include<bits/stdc++.h>

using namespace std;

int find_root(int x);

void line(int x,int y);

int boss[1000001];

int main(){

int n,m,q;

int a[q];

cin>>n;

for(int i=1;i<=100000;i++){

boss[i]=i;

}

cin>>m>>q;

for(int i=0;i<m;i++){

int n1,n2;

cin>>n1>>n2;

line(n1,n2);

}

for(int z=0;z<q;z++){

int n1,n2;

cin>>n1>>n2;

if(find_root(n1)==find_root(n2)) a[z]=1;

else a[z]=0;

}

for(int j=0;j<q;j++){

if(a[j]==1) cout<<":)"<<endl;

else cout<<":("<<endl;

}

int find_root(int x){

if(boss[x]==x) return x;

int root_x=find_root(boss[x]);

boss[x]=root_x;

return root_x;

}

void line(int x,int y){

int root_x=find_root(x);

int root_y=find_root(y);

boss[root_y]=root_x;

}

 
#24275: Re:現在那兩題變成記憶體區段錯誤了@@


angus.93321@gmail.com (bluemoon0321)

學校 : 國立科學工業園區實驗高級中學
編號 : 139711
來源 : [114.136.48.221]
最後登入時間 :
2021-08-21 11:35:29
a445. 新手訓練系列- 我的朋友很少 -- 新手訓練系列 ~ 4 | From: [220.137.83.23] | 發表日期 : 2021-02-02 13:57

#include<bits/stdc++.h>

using namespace std;

int find_root(int x);

void line(int x,int y);

int boss[1000001];

int main(){

int n,m,q;

int a[q];

cin>>n;

for(int i=1;i<=100000;i++){

boss[i]=i;

}

cin>>m>>q;

for(int i=0;i<m;i++){

int n1,n2;

cin>>n1>>n2;

line(n1,n2);

}

for(int z=0;z<q;z++){

int n1,n2;

cin>>n1>>n2;

if(find_root(n1)==find_root(n2)) a[z]=1;

else a[z]=0;

}

for(int j=0;j<q;j++){

if(a[j]==1) cout<<":)"<<endl;

else cout<<":("<<endl;

}

int find_root(int x){

if(boss[x]==x) return x;

int root_x=find_root(boss[x]);

boss[x]=root_x;

return root_x;

}

void line(int x,int y){

int root_x=find_root(x);

int root_y=find_root(y);

boss[root_y]=root_x;

}

找到解決方法了,我把a[q]陣列設在輸入完q之後就對了,不過有大老能說一下是為什麼嗎?



 
#31038: Re: 現在那兩題變成記憶體區段錯誤了@@


luray0601@gmail.com (QWERTYPIG)

學校 : 臺北市私立復興實驗高級中學
編號 : 139334
來源 : [36.226.26.217]
最後登入時間 :
2023-03-24 20:42:11
a445. 新手訓練系列- 我的朋友很少 -- 新手訓練系列 ~ 4 | From: [1.169.87.57] | 發表日期 : 2022-07-06 18:53

#include

using namespace std;

int find_root(int x);

void line(int x,int y);

int boss[1000001];

int main(){

int n,m,q;

int a[q];

cin>>n;

for(int i=1;i<=100000;i++){

boss[i]=i;

}

cin>>m>>q;

for(int i=0;i

int n1,n2;

cin>>n1>>n2;

line(n1,n2);

}

for(int z=0;z

int n1,n2;

cin>>n1>>n2;

if(find_root(n1)==find_root(n2)) a[z]=1;

else a[z]=0;

}

for(int j=0;j

if(a[j]==1) cout<<":)"<

else cout<<":("<

}

int find_root(int x){

if(boss[x]==x) return x;

int root_x=find_root(boss[x]);

boss[x]=root_x;

return root_x;

}

void line(int x,int y){

int root_x=find_root(x);

int root_y=find_root(y);

boss[root_y]=root_x;

}

找到解決方法了,我把a[q]陣列設在輸入完q之後就對了,不過有大老能說一下是為什麼嗎?



如果你先設a[q]再設q,

那在設a[q]時電腦不知道q是甚麼

 
ZeroJudge Forum