#6961: [問題]哪裡錯? 我有去查程式碼...


saitor362320 (Kira Yamato)

學校 : 國立臺灣海洋大學
編號 : 9939
來源 : [140.121.215.219]
最後登入時間 :
2014-09-15 21:28:39
a445. 新手訓練系列- 我的朋友很少 -- 新手訓練系列 ~ 4 | From: [175.180.107.220] | 發表日期 : 2012-08-30 02:51

/**********************************************************************************/
/*  Problem: a445 "新手訓練系列- 我的朋友很少" from 新手訓練系列 ~ 4*/
/*  Language: CPP (1107 Bytes)                                                    */
/*  Result: NA(score:10) judge by this@ZeroJudge                                  */
/*  Author: saitor362320 at 2012-08-30 02:44:00                                   */
/**********************************************************************************/


#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>


using namespace std;

int* p;
int* Rank;

void MakeSet(int x)
{
p[x] = x;
Rank[x] = 0;
}

void Link(int x,int y)
{
if(Rank[x]>Rank[y])
p[y]=x;
else{
p[x]=y;
if(Rank[x]==Rank[y])
++Rank[y];
}
}

int FindSet(int x)
{
if(x!=p[x])
p[x] = FindSet(p[x]);
return p[x];
}

void Union(int x,int y)
{
Link(FindSet(x),FindSet(y));
}

bool answer(int x, int y)
{
return (FindSet(x) == FindSet(y));
}

int main()
{
int n,m,q;


while(cin>>n>>m>>q){

//initial array
p = (int*)(malloc(n*sizeof(int)));
Rank = (int*)(malloc(n*sizeof(int)));

//assign relationship
for(int i=0;i<m;++i){
int a,b;
cin >> a >> b;

//make set
MakeSet(a);
MakeSet(b);
Union(a,b);
}
//answer the question
for(int i=0;i<q;++i){
int p1,p2;
cin >> p1 >> p2;

bool ans = answer(p1,p2);

if(ans)
cout << ":)" << endl;
else
cout << ":(" << endl;
}//exit(1);
//release memory
//free(p);
}
return 0;
}
 
//==================
結果
第 1 測資點(10%): AC (4ms, 396KB)
通過檢測
第 2 測資點(10%): WA (line:4)
答案不正確
您的答案為: :( 正確答案為: :) 
第 3 測資點(10%): WA (line:1)
答案不正確
您的答案為: :( 正確答案為: :) 
第 4 測資點(10%): WA (line:1)
答案不正確
您的答案為: :) 正確答案為: :( 
第 5 測資點(10%): WA (line:1)
答案不正確
您的答案為: :( 正確答案為: :) 
第 6 測資點(10%): WA (line:10)
答案不正確
您的答案為: :) 正確答案為: :( 
第 7 測資點(10%): WA (line:1)
答案不正確
您的答案為: :( 正確答案為: :) 
第 8 測資點(10%): WA (line:1)
答案不正確
您的答案為: :( 正確答案為: :) 
第 9 測資點(10%): WA (line:2)
答案不正確
您的答案為: :( 正確答案為: :) 
第 10 測資點(10%): WA (line:2)
答案不正確
您的答案為: :( 
正確答案為: :)
 
求解感謝@@ 
 
#6963: Re:[問題]哪裡錯? 我有去查程式碼...


saitor362320 (Kira Yamato)

學校 : 國立臺灣海洋大學
編號 : 9939
來源 : [140.121.215.219]
最後登入時間 :
2014-09-15 21:28:39
a445. 新手訓練系列- 我的朋友很少 -- 新手訓練系列 ~ 4 | From: [175.180.106.141] | 發表日期 : 2012-08-30 11:17

更新了小BUG...上面的會每次把root重設

 

/**********************************************************************************/

/*  Problem: a445 "新手訓練系列- 我的朋友很少" from 新手訓練系列 ~ 4*/

/*  Language: CPP (1193 Bytes)                                                    */

/*  Result: NA(score:30) judge by this@ZeroJudge                                  */

/*  Author: saitor362320 at 2012-08-30 11:14:07                                   */

/**********************************************************************************/

 

 

#include<cstdio>

#include<cstdlib>

#include<cstring>

#include<iostream>

 

 

using namespace std;

 

int* p;

int* Rank;

 

void MakeSet(int x)

{

p[x] = x;

Rank[x] = 0;

}

 

void Link(int x,int y)

{

if(Rank[x]>Rank[y])

p[y]=x;

else{

p[x]=y;

if(Rank[x]==Rank[y])

++Rank[y];

}

}

 

int FindSet(int x)

{

if(x!=p[x])

p[x] = FindSet(p[x]);

return p[x];

}

 

void Union(int x,int y)

{

Link(FindSet(x),FindSet(y));

}

 

bool answer(int x, int y)

{

return (FindSet(x) == FindSet(y));

}

 

int main()

{

int n,m,q;

 

 

while(cin>>n>>m>>q){

 

//initial array

p = (int*)(malloc(n*sizeof(int)));

Rank = (int*)(malloc(n*sizeof(int)));

 

for(int i=0;i<=n;++i) Rank[i]=-1;

 

//assign relationship

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

int a,b;

cin >> a >> b;

 

//make set

if(Rank[a]<0) 

MakeSet(a);

if(Rank[b]<0) 

MakeSet(b);

Union(a,b);

}

//answer the question

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

int p1,p2;

cin >> p1 >> p2;

 

bool ans = answer(p1,p2);

 

if(ans)

cout << ":)" << endl;

else

cout << ":(" << endl;

}

//release memory

//free(p);

//free(Rank);

}

return 0;

}

//==================

結果:

第 1 測資點(10%): AC (4ms, 392KB)
通過檢測
第 2 測資點(10%): AC (4ms, 404KB)
通過檢測
第 3 測資點(10%): AC (4ms, 388KB)
通過檢測
第 4 測資點(10%): WA (line:1)
答案不正確
您的答案為: :) 正確答案為: :( 
第 5 測資點(10%): WA (line:9)
答案不正確
您的答案為: :) 正確答案為: :( 
第 6 測資點(10%): WA (line:10)
答案不正確
您的答案為: :) 正確答案為: :( 
第 7 測資點(10%): WA (line:297)
答案不正確
您的答案為: :) 正確答案為: :( 
第 8 測資點(10%): WA (line:221)
答案不正確
您的答案為: :) 正確答案為: :( 
第 9 測資點(10%): WA (line:60)
答案不正確
您的答案為: :) 正確答案為: :( 
第 10 測資點(10%): WA (line:32)
答案不正確
您的答案為: :) 正確答案為: :( 

 

 
#6964: Re:[問題]哪裡錯? 我有去查程式碼...


saitor362320 (Kira Yamato)

學校 : 國立臺灣海洋大學
編號 : 9939
來源 : [140.121.215.219]
最後登入時間 :
2014-09-15 21:28:39
a445. 新手訓練系列- 我的朋友很少 -- 新手訓練系列 ~ 4 | From: [175.180.184.110] | 發表日期 : 2012-08-30 12:05

居然是全域變數的問題....

難怪我找不到好糗呀 

 
ZeroJudge Forum