一、近期总结
1)最近在洛谷上刷了一些题,感觉还可以,难度不是太大,主要是一些基础模拟,不过模拟起来需要花费点时间。有一道题是关于环的,需要进行破环,之前有听老师讲过,但没自己做过,破环主要是将一个环的全部元素按顺序重复一次。还有一个贪心的题目,好久没做了,都快忘完了,希望能够在之后的VJ比赛上多注意一下。还有做题时总是不注意细节,出现错误,必须去测试不同数据去发现错误。
2)图论的题目不太明白,听得迷迷糊糊的,还没去做题,这两天有点懈怠了,还是应该以学习的东西为重。
二、图论学习
1、并查集
!) 定义:
并查集是一种用来管理分组情况的数据结构,可以高效进行,查和并操作。
2)结构:树结构、每个元素对应结点每个组对应一棵树。
实现代码:
int par[];
int rank[[;
void chushi(int n;)//n各节点表示n个元素,开始时没有边。
{
for (int i=0;i<n;i++)
par[i]=i;
rank[i]=0;
}
int find(int x)//查询该元素的根,如果是本身,则该元素单独一组,否则递归直到找到为止。
{
if(par[x]==x)
{
return x;
}
else
{
return par[x]=find(par[x]);
}
}
void untie(int x,int y)
{
x=find(x);
y=find(y);
if(x==y) return;//同根不需要合并
if(rank[x]<rank[y])
{
par[x]=y;
}
else
{
par[y]=x;
if(rank[x]==rank[y]) rank[x]++;
}
}
bool same(int x,int y)
{
return find(x)==find(y);