题目链接:

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;
}

HDU 5486 Difference of Clustering 图论的更多相关文章

  1. HDU 5486 Difference of Clustering 暴力模拟

    Difference of Clustering HDU - 5486 题意:有n个实体,新旧两种聚类算法,每种算法有很多聚类,在同一算法里,一个实体只属于一个聚类,然后有以下三种模式. 第一种分散, ...

  2. HDU 5489 Difference of Clustering 图论

    Difference of Clustering Problem Description Given two clustering algorithms, the old and the new, y ...

  3. HDU 5487 Difference of Languages(BFS)

    HDU 5487 Difference of Languages 这题从昨天下午2点开始做,到现在才AC了.感觉就是好多题都能想出来,就是写完后debug很长时间,才能AC,是不熟练的原因吗?但愿孰能 ...

  4. hdu 4715 Difference Between Primes

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4715 Difference Between Primes Description All you kn ...

  5. HDU 5936 Difference 【中途相遇法】(2016年中国大学生程序设计竞赛(杭州))

    Difference Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  6. HDU 5487 Difference of Languages

    Difference of Languages Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. ...

  7. hdu 4715 Difference Between Primes(素数筛选+树状数组哈希剪枝)

    http://acm.hdu.edu.cn/showproblem.php?pid=4715 [code]: #include <iostream> #include <cstdio ...

  8. HDU 4715 Difference Between Primes (打表)

    Difference Between Primes Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...

  9. hdu 4715 Difference Between Primes (打表 枚举)

    Difference Between Primes Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

随机推荐

  1. 尝试Hexo

    Hexo是没弄好,目前还只在GitHub上搭建了个框架,地址:https://lengdefengren.github.io/  或者lengdefengren.github.io 我测试Hexo已经 ...

  2. Cocos2d-JS地图性能问题

    如图所示游戏场景,它是我们以往介绍的实例,在场景中有三个方块精灵(BoxA.BoxB和BoxC)和背景精灵,这个背景叫做“地图”有点牵强,地图采用了有规律的纹理. 游戏场景 那么我们如何设计这个游戏地 ...

  3. 开始写自己的iOS技术博客了

    2015-09-26 中秋节前夕,开始写自己的iOS开发相关的技术博客,还请广大专业的人士批评指教!欢迎纠错和交流! 在来到北京的第二家公司艾亿新融资本管理的子公司——资配易.由于基本没有加班,也算有 ...

  4. in C#,编译型常量(const)和运行时常量(readonly)

    readonly 关键字与 const 关键字不同. const 字段只能在该字段的声明中初始化. readonly 字段可以在声明或构造函数中初始化. 因此,根据所使用的构造函数, readonly ...

  5. 7款震撼人心的HTML5CSS3文字特效

    1.HTML5像素文字爆炸重组动画特效 今天我们要分享一款基于HTML5技术的文字像素爆炸重组动画特效,我们可以在输入框中指定任意文字,点击确定按钮后,就会将原先的文字爆炸散去,新的文字以像素点的形式 ...

  6. C语言 电梯函数

    #include <stdio.h> #include <time.h> #include <stdlib.h> void test(){//汉字输出 printf ...

  7. silverlight 文本框只能输入数字

    void mobile_KeyUp(object sender, KeyEventArgs e) { Regex rg = new Regex("^[0-9]{1,11}$"); ...

  8. 用泛型的IEqualityComparer<T>接口去重复项

    提供者:porschev 题目:下列数据放在一个List中,当ID和Name都相同时,去掉重复数据 ID Name 1  张三 1  李三 1  小伟 1  李三  2  李四 2  李武 ----- ...

  9. FastDFS4 + Ubuntu12安装及部署

    1. 安装libevent 如果需要使用http进行下载,需要安装这个组件. 2. 安装fastdfs 3. 配置fastdfs 4. 安装nginx 问题4.1:安装nginx启动后访问原先资源UR ...

  10. HMTL5的 video 在IOS7中碰到的坑

    直接说问题吧, 测试设备,ipod 我们在移动端播放视频的时候,一般使用H5的video标签,OK,这里有几点差异(就我目前所发现的)给大家分享一下, 1.在IOS7中,video元素是需要确定大小的 ...