题意:

      给你一个图,问你删除一些边后还有几个连通快..

思路:

      典型的并查集删边操作,并查集的删边就是先把不删除的边并查集一边(本题没有不删除的边),然后逆序吧所有要删除的边以点点加到并查集数组里,如果当前的边的两个点不是一个集合的,那么删除当前边后就会使连通快加一...


#include<stdio.h>
#include<string.h> #define N 11000

typedef struct
{
int
a ,b ,c;
}
EDGE; int mer[N];
EDGE E[N*10]; int finds(int x)
{
return
x == mer[x] ? x : mer[x] = finds(mer[x]);
} int main ()
{
int
n ,m ,a ,b ,i;
while(~
scanf("%d %d" ,&n ,&m))
{
for(
i = 1 ;i <= n ;i ++)
mer[i] = i;
for(
i = 1 ;i <= m ;i ++)
{

scanf("%d %d" ,&a ,&b);
E[i].a = a + 1;
E[i].b = b + 1;
}
int
sum = n;
for(
i = m;i >= 1;i --)
{

a = finds(E[i].a);
b = finds(E[i].b);
E[i].c = sum;
if(
a != b) sum --;
mer[a] = b;
}
for(
i = 1 ;i <= m ;i ++)
printf("%d\n" ,E[i].c);
}
return
0;
}

最新文章

  1. SqlServer灾备方案(本地)
  2. android 程序代码执行adb
  3. IOS - 开发之内存缓存机制
  4. java io读书笔记(3)数值类型的数据
  5. 一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号
  6. js的数组操作 splice
  7. android xml操作
  8. rails3 Bundle简介
  9. java 写文件解析
  10. Hadoop远程调用机制
  11. PyCharm下载及安装教程
  12. flask 出现 TemplateNotFound的问题
  13. Nginx 动静分离
  14. Tomcat配置(部分知识点)
  15. MVC_Route层层深入
  16. sed 用法记录
  17. spring cloud 配置文件application.yml和bootstrap.yml 的定位,区别和联系
  18. Kubernetes之Controllers二
  19. 可执行 jar | 到底如何执行
  20. SqlServer 2005 将已存在大量数据的表更改为分区表

热门文章

  1. 鸿蒙的js开发部模式18:鸿蒙的文件上传到python服务器端
  2. HDOJ-6621(线段树+二分法)
  3. Ext.Net一般处理程序上传文件
  4. 2020年12月-第02阶段-前端基础-CSS Day03
  5. Python爬虫学习三------requests+BeautifulSoup爬取简单网页
  6. Navicat 121版本激活工具
  7. 鸿蒙第三方组件——SwipeCaptcha滑动拼图验证组件
  8. 想了很久,一道Microsoft的笔试题目 —— Reversing Linked List
  9. java中的String,StringBuffer与StringBuilder
  10. Linux性能优化:内存使用情况分析