HDU 5486 Difference of Clustering 图论
题目链接:
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 图论相关推荐
- 【HDU 5936 --- Difference】折半枚举+二分
[HDU 5936 --- Difference]折半枚举+二分 Description Little Ruins is playing a number game, first he chooses ...
- HDU - 4598 Difference
题意: 有一个图,给图上每个顶点都赋一个实数Ai.如果存在一个正整数T满足下面两个条件,这个图就是一个"difference". |Ai| <= T. (vi, vj) in ...
- HDU 4598 Difference 差分约束 + 判奇圈
题意:给你一个无向图 这个图是difference的如果存在一个正实数T使得图中所有的点的绝对值|ai|<T 并且点i j构成一条边当且仅当|ai-aj|>=T 问你是否存在一个这样的图 ...
- HDU 5936 Difference
题意: 有一个函数f(y, k) = y的每个十进制位上的数字的k次幂之和 给x, k 求 有多少个y满足 x = f(y, k) - y 思路: (据说这叫中途相遇法?) 由于 x >= 0 ...
- hdu5486 Difference of Clustering 暴力
这题什么情况.....直接暴力加标记,复杂度o(n)啊...明显能过啊...明显是除了签到最简单的一道....居然过这么少人...估计很多人看到merge和split以为是什么数据结构.. #incl ...
- hdu 4715 Difference Between Primes 2013年ICPC热身赛A题 素数水题
题意:给出一个偶数(不论正负),求出两个素数a,b,能够满足 a-b=x,素数在1e6以内. 只要用筛选法打出素数表,枚举查询下就行了. 我用set储存素数,然后遍历set里面的元素,查询+x后是否还 ...
- 【hdu 4859】海岸线(图论--网络流最小割)
题意:有一个区域,有'.'的陆地,'D'的深海域,'E'的浅海域.其中浅海域可以填充为陆地.这里的陆地区域不联通,并且整个地图都处在海洋之中.问填充一定浅海域之后所有岛屿的最长的海岸线之和. 解法:最 ...
- HDU 4598 Difference
由|ai| < T for all i and ,(vi, vj) in E <=> |ai - aj| >= T,可知,相邻的边都是一正一负,dfs判断是否成立 差分约束判断 ...
- hdu 4598 Difference(奇圈判定+差分约束)
这是通化邀请赛的题,当时比赛的时候还完全没想法呢,看来这几个月的训练还是有效果的... 题意要求(1) |ai| < T for all i (2) (vi, vj) in E <=& ...
最新文章
- MYSQL事务隔离级别详解附加实验
- 图解NHibernate项目框架
- 微服务架构与领域驱动设计应用实践
- 【数据结构与算法】之深入解析“学生出勤记录I”的求解思路与算法示例
- 在SAP CRM呼叫中心里创建Service Request的实现技术
- 天源迪科和科大讯飞的关系_科大讯飞 语音突围
- 【MySQL】MySQL 5.7 sys Schema
- STC单片机不需要按电源开关下载的方法!
- Markdown语法中使用表情符号
- HTML的表单及框架
- 用于暴露感测的太阳传感器_凯利讯半导体
- unbuntu20.04 安装mysql
- c语言程序后退_单片机控制小车循迹(前进、后退、左右转)
- win8访问不了服务器共享文件夹,如何解决Win8局域网无法访问共享文件夹的问题...
- 【RMVA】雇佣兵系统(1)
- 1、孟子·梁惠王上 孟子·梁惠王下
- 计算机网络——物理层和信道复用(频分、时分、码分)技术
- 揭秘zData 5.0|如何在海量数据环境下高效运行数据库?
- php7.3新特性汇总
- 高级计算机网络,高级计算机网络
热门文章
- 【嵌入式】C语言高级编程-强符号和弱符号(09)
- 【IT资讯】年薪170万码农征友,条件让网友炸锅……
- 【Linux】一步一步学Linux——userdel命令(84)
- 在线识图翻译_拍照翻译ios版下载在线识图翻译-免费拍照翻译软件苹果版下载...
- 分布式理论、架构设计(自定义RPC)
- VB程序逆向常用的函数
- animation动画不生效_SwiftUI动画(1)之Animatable
- sparksql(1)——Dataframe
- 第八章 PX4-SDlog解析
- 牛客网暑期ACM多校训练营(第一场)J Different Integers