D-City

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)
Total Submission(s): 18    Accepted Submission(s): 15

Problem Description
Luxer is a really bad guy. He destroys everything he met. 
One day Luxer went to D-city. D-city has N D-points and M D-lines. Each D-line connects exactly two D-points. Luxer will destroy all the D-lines. The mayor of D-city wants to know how many connected blocks of D-city left after Luxer destroying the first K D-lines in the input. 
Two points are in the same connected blocks if and only if they connect to each other directly or indirectly.
 
Input
First line of the input contains two integers N and M. 
Then following M lines each containing 2 space-separated integers u and v, which denotes an D-line. 
Constraints: 
0 < N <= 10000 
0 < M <= 100000 
0 <= u, v < N. 
 
Output
Output M lines, the ith line is the answer after deleting the first i edges in the input.
 
Sample Input
5 10
0 1
1 2
1 3
1 4
0 2
2 3
0 4
0 3
3 4
2 4
 
Sample Output
1
1
1
2
2
2
2
3
4
5

Hint

The graph given in sample input is a complete graph, that each pair of vertex has an edge connecting them, so there's only 1 connected block at first. The first 3 lines of output are 1s because after deleting the first 3 edges of the graph, all vertexes still connected together. But after deleting the first 4 edges of the graph, vertex 1 will be disconnected with other vertex, and it became an independent connected block. Continue deleting edges the disconnected blocks increased and finally it will became the number of vertex, so the last output should always be N.

 
Source
 
Recommend
liuyiding
 
 /* ***********************************************
Author :kuangbin
Created Time :2013/8/24 12:20:44
File Name :F:\2013ACM练习\比赛练习\2013通化邀请赛\1004.cpp
************************************************ */ #include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
const int MAXN = ;
int F[MAXN];
int find(int x)
{
if(F[x] == -)return x;
return F[x] = find(F[x]);
}
pair<int,int>p[];
int ans[];
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout); int n,m;
while(scanf("%d%d",&n,&m) == )
{
memset(F,-,sizeof(F));
for(int i = ;i <= m;i++)
{
scanf("%d%d",&p[i].first,&p[i].second);
}
ans[m] = n;
for(int i = m;i > ;i --)
{
int t1 = find(p[i].first);
int t2 = find(p[i].second);
if(t1 != t2)
{
ans[i-] = ans[i] - ;
F[t1] = t2;
}
else ans[i-] = ans[i];
}
for(int i = ;i <= m;i++)
printf("%d\n",ans[i]);
}
return ;
}

最新文章

  1. H5学习
  2. blade and soul Group Combos
  3. Android实现欢迎界面,点击进入应用
  4. 6.3Sum &amp;&amp; 4Sum [ &amp;&amp; K sum ] &amp;&amp; 3Sum Closest
  5. 【CSS】最全的CSS浏览器兼容问题
  6. esp8266烧写机智云固件方法
  7. 解决 Chrome 浏览器自动调整小于11px字体的问题
  8. Bloom Filter概念和原理
  9. 安装android studio 出现的路径问题 tools.jar&#39; seems to be not in Android Studio classpath
  10. OS X升级到10.10使用后pod故障解决方案出现
  11. USB LPT 端口映射
  12. vuex使用报错
  13. 浅谈TCP IP协议栈(一)入门知识【转】
  14. java web中使用mysql语句遇到的问题
  15. CSS-动画巧用translated3d
  16. Spring Boot笔记五: Web开发之Webjar和静态资源映射规则
  17. vue项目导入外部css样式和js文件
  18. 怎么样入门python?来自知乎
  19. L2-013. 红色警报
  20. element-ui 2.7.2版本使用 表格展开行 功能遇到的奇葩问题?

热门文章

  1. samba中的pdbedit用法
  2. java基础14 多态(及关键字:instanceof)
  3. CentOS_Linux服务器系统安装之分区
  4. 20165301 2017-2018-2 《Java程序设计》第六周学习总结
  5. Linux 基础——文件搜索命令find
  6. String 不变性以及 Java 值传递和引用传递
  7. SQLyog-12.0.9-0.x64
  8. Lock接口简介
  9. Windows 消息循环(1) - 概览
  10. 深入浅出Spring(三) AOP详解