题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=5486

题意:

给你每个元素一开始所属的集合和最后所属的集合,问有多少次集合的分离操作,并操作和不变操作。

分离:[m1,m2,m3]->[m1],[m2],[m3]

合并:分离的逆操作

不变:[m1,m2,m3]->[m1,m2,m3]

题解;

以集合为单位建图,(一个元素从集合s1到s2则建一条边连接集合s1,s2,注意要删除重边)

然后对于每个点,与它相邻的点如果入度都为1,则为分离操作,

把图转置,再跑一遍分离就是合并。

如果一个集合只有一条连向自己的边,那么说明它是1:1操作。

代码:

 #include<iostream>
#include<cstdio>
#include<map>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;const int maxn = 1e6 + 10;int n,_max;
map<pair<int, int>, int> mp;
vector<int> G[maxn], G2[maxn];
int in[maxn], in2[maxn];void init() {_max = -1;mp.clear();for (int i = 0; i <maxn; i++) G[i].clear(),G2[i].clear();memset(in, 0, sizeof(in));memset(in2, 0, sizeof(in2));
}int main() {int tc,kase=0;scanf("%d", &tc);while (tc--) {scanf("%d", &n);init();for (int i = 0; i < n; i++) {int u, v;_max = max(_max, u);_max = max(_max, v);scanf("%d%d", &u, &v);if (!mp[make_pair(u, v)]) {mp[make_pair(u, v)]++;G[u].push_back(v);in[v]++;G2[v].push_back(u);in2[u]++;}}int ans1=0, ans2=0,ans3=0;for (int i = 0; i <= _max; i++) {int su = 1;for (int j = 0; j < G[i].size(); j++) {int v = G[i][j];if (in[v] > 1) { su = 0; break; }}if (su) {if (G[i].size() == 1) ans3++;else if(G[i].size()>1) ans2++;}}for (int i = 0; i <= _max; i++) {int su = 1;for (int j = 0; j < G2[i].size(); j++) {int v = G2[i][j];if (in2[v] > 1) { su = 0; break; }}if (su) {if (G2[i].size() == 1);else if(G2[i].size()>1) ans1++;}}printf("Case #%d: %d %d %d\n", ++kase, ans2,ans1, ans3);}return 0;
}

转载于:https://www.cnblogs.com/fenice/p/5602152.html

HDU 5486 Difference of Clustering 图论相关推荐

  1. 【HDU 5936 --- Difference】折半枚举+二分

    [HDU 5936 --- Difference]折半枚举+二分 Description Little Ruins is playing a number game, first he chooses ...

  2. HDU - 4598 Difference

    题意: 有一个图,给图上每个顶点都赋一个实数Ai.如果存在一个正整数T满足下面两个条件,这个图就是一个"difference". |Ai| <= T. (vi, vj) in ...

  3. HDU 4598 Difference 差分约束 + 判奇圈

    题意:给你一个无向图 这个图是difference的如果存在一个正实数T使得图中所有的点的绝对值|ai|<T 并且点i j构成一条边当且仅当|ai-aj|>=T 问你是否存在一个这样的图 ...

  4. HDU 5936 Difference

    题意: 有一个函数f(y, k) = y的每个十进制位上的数字的k次幂之和 给x, k 求 有多少个y满足 x = f(y, k) - y 思路: (据说这叫中途相遇法?) 由于 x >= 0 ...

  5. hdu5486 Difference of Clustering 暴力

    这题什么情况.....直接暴力加标记,复杂度o(n)啊...明显能过啊...明显是除了签到最简单的一道....居然过这么少人...估计很多人看到merge和split以为是什么数据结构.. #incl ...

  6. hdu 4715 Difference Between Primes 2013年ICPC热身赛A题 素数水题

    题意:给出一个偶数(不论正负),求出两个素数a,b,能够满足 a-b=x,素数在1e6以内. 只要用筛选法打出素数表,枚举查询下就行了. 我用set储存素数,然后遍历set里面的元素,查询+x后是否还 ...

  7. 【hdu 4859】海岸线(图论--网络流最小割)

    题意:有一个区域,有'.'的陆地,'D'的深海域,'E'的浅海域.其中浅海域可以填充为陆地.这里的陆地区域不联通,并且整个地图都处在海洋之中.问填充一定浅海域之后所有岛屿的最长的海岸线之和. 解法:最 ...

  8. HDU 4598 Difference

    由|ai| < T for all i and ,(vi, vj) in E <=> |ai - aj| >= T,可知,相邻的边都是一正一负,dfs判断是否成立 差分约束判断 ...

  9. hdu 4598 Difference(奇圈判定+差分约束)

    这是通化邀请赛的题,当时比赛的时候还完全没想法呢,看来这几个月的训练还是有效果的... 题意要求(1) |ai| < T for all i   (2) (vi, vj) in E <=& ...

最新文章

  1. MYSQL事务隔离级别详解附加实验
  2. 图解NHibernate项目框架
  3. 微服务架构与领域驱动设计应用实践
  4. 【数据结构与算法】之深入解析“学生出勤记录I”的求解思路与算法示例
  5. 在SAP CRM呼叫中心里创建Service Request的实现技术
  6. 天源迪科和科大讯飞的关系_科大讯飞 语音突围
  7. 【MySQL】MySQL 5.7 sys Schema
  8. STC单片机不需要按电源开关下载的方法!
  9. Markdown语法中使用表情符号
  10. HTML的表单及框架
  11. 用于暴露感测的太阳传感器_凯利讯半导体
  12. unbuntu20.04 安装mysql
  13. c语言程序后退_单片机控制小车循迹(前进、后退、左右转)
  14. win8访问不了服务器共享文件夹,如何解决Win8局域网无法访问共享文件夹的问题...
  15. 【RMVA】雇佣兵系统(1)
  16. 1、孟子·梁惠王上 孟子·梁惠王下
  17. 计算机网络——物理层和信道复用(频分、时分、码分)技术
  18. 揭秘zData 5.0|如何在海量数据环境下高效运行数据库?
  19. php7.3新特性汇总
  20. 高级计算机网络,高级计算机网络

热门文章

  1. 【嵌入式】C语言高级编程-强符号和弱符号(09)
  2. 【IT资讯】年薪170万码农征友,条件让网友炸锅……
  3. 【Linux】一步一步学Linux——userdel命令(84)
  4. 在线识图翻译_拍照翻译ios版下载在线识图翻译-免费拍照翻译软件苹果版下载...
  5. 分布式理论、架构设计(自定义RPC)
  6. VB程序逆向常用的函数
  7. animation动画不生效_SwiftUI动画(1)之Animatable
  8. sparksql(1)——Dataframe
  9. 第八章 PX4-SDlog解析
  10. 牛客网暑期ACM多校训练营(第一场)J Different Integers