hdu 3635 并查集
2015-07-28 20:26
211 查看
这道题主要还是要怎么判断矛盾,用rank数组保存与父亲节点的奇偶性,0表示相同,1表示不同,添加关系的时候先判断再更新就好了。。#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
int father[111111];
int tim[111111],size[111111];
int js=0;
int find(int x)
{
int t;
if(father[x]!=x)
{
t=find(father[x]);
tim[x]=tim[father[x]]+tim[x];//累加转移次数
father[x]=t;
}
return(father[x]);
}
void tran(int a,int b)
{
int x,y;
x=find(a);
y=find(b);
if(x==y) return;
father[x]=y;
size[y]+=size[x];//个数加给父亲
tim[x]+=1;//根节点转移次数加1
}
void query(int a)
{
int t;
t=find(a);
printf("%d %d %d\n",t,size[t],tim[a]);
}
int main()
{
char ch;
int t,n,m,i,j,a,b;
scanf("%d",&t);
while(t--)
{
js++;
printf("Case %d:\n",js);
scanf("%d%d%",&n,&m);
memset(tim,0,sizeof(tim));
for(i=1;i<=n;i++)
{father[i]=i; size[i]=1;}
for(i=1;i<=m;i++)
{
cin>>ch;
if(ch=='T')
{
scanf("%d%d",&a,&b);
tran(a,b);
}
else
{
scanf("%d",&a);
query(a);
}
}
}
}
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
int father[111111];
int tim[111111],size[111111];
int js=0;
int find(int x)
{
int t;
if(father[x]!=x)
{
t=find(father[x]);
tim[x]=tim[father[x]]+tim[x];//累加转移次数
father[x]=t;
}
return(father[x]);
}
void tran(int a,int b)
{
int x,y;
x=find(a);
y=find(b);
if(x==y) return;
father[x]=y;
size[y]+=size[x];//个数加给父亲
tim[x]+=1;//根节点转移次数加1
}
void query(int a)
{
int t;
t=find(a);
printf("%d %d %d\n",t,size[t],tim[a]);
}
int main()
{
char ch;
int t,n,m,i,j,a,b;
scanf("%d",&t);
while(t--)
{
js++;
printf("Case %d:\n",js);
scanf("%d%d%",&n,&m);
memset(tim,0,sizeof(tim));
for(i=1;i<=n;i++)
{father[i]=i; size[i]=1;}
for(i=1;i<=m;i++)
{
cin>>ch;
if(ch=='T')
{
scanf("%d%d",&a,&b);
tran(a,b);
}
else
{
scanf("%d",&a);
query(a);
}
}
}
}
相关文章推荐
- Linux LAMP 搭建
- java基础之集合函数-List
- Snail—UI学习之代理传值Delegate
- makefile 递归用法和.PHONY的讲解
- 单例类Singleton
- Delphi7学习第五天
- 2015年7月28日--博客开通
- linux文本文件查看、显示命令 :cat head tail grep more less nl
- ORACLE-015:ora-25153 临时表空间为空,ora01652 无法通过128
- linux文本文件查看、显示命令 :cat head tail grep more less nl 分类: Ubuntu学习笔记 2015-07-28 20:25 55人阅读 评论(0) 收藏
- UVa514 铁轨
- iOS 苹果官方Demo合集
- noip2010 乌龟棋
- hdu 5326 Work【并查集】
- linux udp 单播组播广播实现
- android优化bmob聊天组件
- HDU 5319 Painter(2015多校联合)
- HDU 5325 CRAZY BOBO 排序
- JAVA 注解
- 杭电ACM1074——Doing Homework~~状态压缩DP