博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
并查集的删除操作
阅读量:5151 次
发布时间:2019-06-13

本文共 1086 字,大约阅读时间需要 3 分钟。

C - Junk-Mail Filter  

题目大意:就是一堆信件,然后有两个操作,一个是把一堆信件归在一个文件夹,一个就是把一个信件从文件夹中取出,最后问有多少个文件夹,一开始所有信件都是单独的文件夹。

其实就是一个简单的并查集删除的操作,当删除时就创建新的结点来代替它,要注意的是数组的范围,虽然信件只有10的5次方,但是操作有10的6次方,因为删除时还得创建新节点,所以数组一定要开大,不然不是WR就是TL。最后的输出可以直接用set,也可以用数组标记信件是归在哪个文件夹,注意的是后面创建的结点是虚拟的,真实的信件有对它们的映射,所以最后统计时只考虑真实信件。

1 #include
2 #include
3 #include
4 using namespace std; 5 struct Email{ 6 int id,gen; 7 }em[1201108];//要够大 8 int n,m; 9 int gui(int x);10 void bing(int x,int y);11 void del(int x);12 int main()13 {14 int i,x,y,test=0;15 char c;16 while(scanf("%d%d",&n,&m)!=EOF&&(n||m))17 {18 int N=n;19 set
s;20 for(i=0;i
>c;28 if(c=='M')29 {30 scanf("%d%d",&x,&y);31 bing(em[x].id,em[y].id);32 }33 else34 {35 scanf("%d",&x);36 del(x);37 }38 }39 for(i=0;i

 

转载于:https://www.cnblogs.com/LMCC1108/p/9355182.html

你可能感兴趣的文章