题目

题目链接

题解

并查集。


注意坑点:帮派的人数必须大于2。


代码

#include<bits/stdc++.h>
using namespace std;
#define PSI pair<string,int>
const int N = 1e5+10;int n, k, cnt;
int fa[N];int gongw[N]; // 每个人对于帮派的贡献,同一个通话只用记录一个人的,因为如果两个人都修改gongw,最后累加的时候会变成两倍
int w[N]; // 每个人的通话时间,两个人都要加,为了找帮派首领
int num[N]; // num[i] 表示以i为代表的帮派的人数,注意,代表与首领的不同,代表是find(x),而首领只是本题中的概念
int head[N]; // head[i] 表示以i为代表的帮派的首领
int teamw[N]; // teamw[i] 表示以i为代表的帮派的总权重,累加该帮派的gongw即可 map<string, int> nti; // name to int:将名字转为对应的索引
map<int, string> itn; // int to name:将索引转为对应的名字 set <int> s;vector <PSI> v;int find (int x) {return fa[x] == x ? x : fa[x] = find (fa[x]);
}void join (int x, int y) {int rx = find (x), ry = find (y);if (rx != ry) fa[rx] = ry;
}int main()
{cin >> n >> k;for (int i = 0;i < N;i ++) fa[i] = i;for (int i = 0;i < n;i ++) {string aa, bb;int c, a, b;cin >> aa >> bb >> c;if (!nti[aa]) nti[aa] = ++ cnt, itn[cnt] = aa;a = nti[aa];if (!nti[bb]) nti[bb] = ++ cnt, itn[cnt] = bb;b = nti[bb];join (a, b);gongw[a] += c;w[a] += c;w[b] += c;}for (int i = 1;i <= cnt;i ++) {int rt = find (i);num[rt] ++;teamw[rt] += gongw[i];head[rt] = w[head[rt]] < w[i] ? i : head[rt]; // 看看是否要换首领 if (teamw[rt] > k) s.insert (rt);}for (int item : s) if (num[item] > 2) // !!!帮派人数必须大于2,题目要求的 v.push_back ({itn[head[item]], num[item]});sort (v.begin(), v.end());cout << v.size() << endl;for (int i = 0;i < v.size();i ++) cout << v[i].first << ' ' << v[i].second << endl;return 0;
}

1034 Head of a Gang (30 分)相关推荐

  1. PAT:1034 Head of a Gang (30分)

    1034 Head of a Gang (30分) One way that the police finds the head of a gang is to check people's phon ...

  2. 1034 Head of a Gang (30 分) One way that the police finds the head of a gang is to check people‘s pho

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 One way that the police finds the head of a gang is to check peop ...

  3. 1034 Head of a Gang (30 分) 【难度: 中 / 知识点: 并查集】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805456881434624 首先不难想到的是并查集,不过这里有一个关键的 ...

  4. pat 甲级 1034. Head of a Gang (30)

    1034. Head of a Gang (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue One wa ...

  5. 【PAT - 甲级1034】Head of a Gang (30分)(并查集)

    题干: One way that the police finds the head of a gang is to check people's phone calls. If there is a ...

  6. PAT A1034 Head of a Gang (30 分)

    刚刚开始学习图论,这是一道图的遍历题,目前对我来说独立完成还是有点困难的...自己想了很久,参考了书上的代码,也调试了很久,希望做后面的题目能有进步吧. #include <cstdio> ...

  7. pat 1034. Head of a Gang (30)

    题意:求边权大于k并且点数大于2的联通块,输出其中的重要点,重要点:联通块中与该点相连的边权最大 丢set里乱搞 #include<bits/stdc++.h> using namespa ...

  8. 3分和30分文章差距在哪里?

    好的分析和可视化,可以提供大量的信息,同时兼顾简洁优雅. 今天我们抛开实验设计.方法和工作量等因素,仅从文章最吸引人的图片来讨论3分和30分(顶级)文章差距在哪里? 以2017年8月25日发表在Sci ...

  9. 微生物组:3分和30分文章差距在哪里?

    好的分析和可视化,可以提供大量的信息,同时兼顾简洁优雅. 今天我们抛开实验设计.方法和工作量等因素,仅从文章最吸引人的图片来讨论3分和30分(顶级)文章差距在哪里? 以2017年8月25日发表在Sci ...

最新文章

  1. [特征工程系列五]基于蒙特卡洛搜索树的半自动特征工程方案
  2. 误删除的文件夹还能恢复吗?
  3. windows下对路由表的操作命令
  4. VBA 的编写与执行
  5. centos mysql-5.5.20_centos 下安装mysql5.5.20出现的问题
  6. java实战调用数据库_实战php调用java类由java类读数据库完成相关操作(InberWrite)_PHP...
  7. u8 和 char如何转化_如何编写高效率稳定的单片机代码
  8. c语言goto语句用法_硬件工程师必知的10个C语言技巧
  9. Python离线安装PIL 模块(pillow、沙箱、照相)
  10. C# IOCP完成端口模型(简单实用高效)
  11. 09_用户登录退出实现
  12. hashmap value占用空间大小_性能优化:为什么要使用SparseArray和ArrayMap替代HashMap?...
  13. Microsoft Store 微软应用商店0x80131500解决方案
  14. TCP客户端和服务端
  15. 新能源车牌 普通车牌 特殊车牌正则校验
  16. c语言中while(a)、if(a)、while(!a)、if(!a)、if(%a)是什么意思?
  17. 3D游戏建模行业门槛高吗
  18. 制作视频软件哪个好?教培人最爱的视频制作软件,一款就够!
  19. Scratch编程-画图模块13【寿光市青少年创意编程大赛真题】
  20. 成都传智播客java培训中心

热门文章

  1. vuecli3 实现 移动端和pc端 界面切换(两套代码)
  2. 顺时针打印矩阵 python
  3. Android 语系设置 中文输入法
  4. 【在人间】关于网吧的记忆
  5. 链宇科技完成千亿融资,电动车做“充电宝”能有多少商业价值?
  6. [附源码]JSP+ssm计算机毕业设计桶装水配送管理系统h0zn3【源码、数据库、LW、部署】
  7. 操作系统实验之生产者和消费者程序
  8. android中传感器的应用
  9. php项目开发免费后台模板,自定义后台模板文件
  10. 只见老婆问道 霏凡软件