您的位置:首页 > 其它

codeforces-B. DZY Loves Chemistry

2014-07-30 08:55 344 查看
没什么好说的,赤裸裸的并查集,当然注意结果用long long 存

#include <cstdio>

#include <cstring>

#include <iostream>

#include <cmath>

using namespace std;

#define maxn 250

int fa[maxn];

int n;

void Init()

{

for(int i=1;i<=n;i++)

fa[i]=i;

}

int find(int x)

{
if(x!=fa[x])
fa[x]=find(fa[x]);

return fa[x];

}

int main()

{
int m;
int p,q;
scanf("%d %d",&n,&m);
Init();
int cnt=0;
if(m==0)
printf("1\n");
else
{
while(m--)
{
scanf("%d %d",&p,&q);
int aa=find(p);
int bb=find(q);
fa[aa]=bb;
}
long long sum=(1LL);
for(int i=1;i<=n;i++)
{
if(find(i)!=i) sum*=2; 
}
 cout<<sum<<endl;
//printf("%d\n",sum);
}
return 0;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  codeforces