讨论 / 求帮忙
mnb 2012-02-12 00:07:00
点我顶贴 收藏 删除
#include "stdio.h"

int father[1000000]={0};

int getfather(int v)

{

if(father[v]==0)return v;

else return getfather(father[v]);

}

int bing(int x,int y)

{

int v,n;

v=getfather(x);

n=getfather(y);

if(v==n)return 1;

else father[n]==v;

}

int pan(int x,int y)

{

if(getfather(x)==getfather(y))return 1;

else return 0;

}

int main()

{

int p,m,n,i;

scanf("%d%d%d",&n,&m,&p);

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

{

int a,b;

scanf("%d%d",&a,&b);

bing(a,b);

}

for(i=0;i<p;i++)

{

int a,b;

scanf("%d%d",&a,&b);

if(pan(a,b))printf("Yes");

else printf("No");

}

getchar();

getchar();

return 0;

}

#1 354118677@2012-02-12 00:07:00
回复 删除
你没有理解并查集,并查集找父节点是数组应该初始化成本身啊
查看更多回复
提交回复