PAT甲级1034. Head of a Gang

题意:

警方找到一个帮派的头的一种方式是检查人民的电话。如果A和B之间有电话,我们说A和B是相关的。关系的权重被定义为两人之间所有电话的总时间长度。

“帮派”是超过2人的群体,彼此相关,总关系权重大于给定的阈值K.在每个帮派中,最大总重量的人是头。现在给了一个电话列表,你应该找到帮派和头。

输入规格:

每个输入文件包含一个测试用例。

对于每种情况,第一行分别包含两个正数N和K(均小于或等于1000),电话号码和权重。然后N行遵循以下格式:

Name1 Name2时间

其中Name1和Name2是呼叫两端的人员的姓名,“时间”是呼叫的长度。

一个名字是从A-Z中选出的三个大写字母的字符串。时间长度为不超过1000分钟的正整数。

输出规格:

对于每个测试用例,首先在一行中列出组合的总数。然后对于每个帮派,一行打印头的名字和成员的总数。

保证每个帮派的头是独一无二的。输出必须按照头部名称的字母顺序进行排序

思路:

就是相当于找有几个符合gang条件的连通分量。要求分量member2个以上。总共通话时间为k以上。dfs可以求解。

ac代码:

C++

#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
#include<queue>
#include<vector>
#include<cstring>
#include<stdio.h>
#include<unordered_map>
#include<map> using namespace std; int n, k;
unordered_map<string, int> timecount;
unordered_map<string, vector<string> > link;
map<string, int> out;
map<string,bool> flag;
int idx, allweight;
string st; void dfs(string str)
{
flag[str] = true;
allweight += timecount[str]; if (timecount[str] > timecount[st]) st = str;
for (int i = 0; i < link[str].size(); i++)
{
if (!flag[link[str][i]])
{
dfs(link[str][i]);
}
}
idx++;
} int main()
{
cin >> n >> k;
char a[5], b[5];
int time;
while (n--)
{
scanf("%s %s %d", a, b, &time);
string aa = string(a), bb = string(b);
if (timecount.find(aa) == timecount.end()) timecount[aa] = 0;
if (timecount.find(bb) == timecount.end()) timecount[bb] = 0;
timecount[aa] += time;
timecount[bb] += time; link[aa].push_back(bb);
link[bb].push_back(aa); flag[aa] = false;
flag[bb] = false;
} for (auto it = flag.begin(); it != flag.end(); it++)
{
if (it->second == false)
{
idx = 0;
allweight = 0;
st = it->first;
dfs(st);
if (idx > 2 && allweight / 2 > k)
out[st] = idx;
}
} cout << out.size() << endl;
for (auto it = out.begin(); it != out.end(); it++)
cout << it->first << " " << it->second << endl;
return 0;
}

PAT甲级1034. Head of a Gang的更多相关文章

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

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

  2. PAT 甲级 1034 Head of a Gang (30 分)(bfs,map,强连通)

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

  3. pat 甲级 1034 ( Head of a Gang )

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

  4. PAT甲级1034 Head of a Gang【bfs】

    题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805456881434624 题意: 给定n条记录(注意不是n个人的 ...

  5. PAT Advanced 1034 Head of a Gang (30) [图的遍历,BFS,DFS,并查集]

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

  6. PAT 1034 Head of a Gang[难][dfs]

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

  7. PAT 1034. Head of a Gang

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

  8. PAT甲级题解(慢慢刷中)

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6102219.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  9. 【转载】【PAT】PAT甲级题型分类整理

    最短路径 Emergency (25)-PAT甲级真题(Dijkstra算法) Public Bike Management (30)-PAT甲级真题(Dijkstra + DFS) Travel P ...

随机推荐

  1. 使用迭代法穷举1到N位最大的数

    这是何海涛老师剑指offer上面第12题,这题首先注意不能使用整数int型作为操作对象,因为N很大时明显会溢出.这种大数据一般都是使用的字符串来表示. 直接法就是:1.针对字符串的加法,涉及循环进位及 ...

  2. Android :ExpandableListActivity

    http://developer.android.com/reference/android/app/ExpandableListActivity.html# public class Expanda ...

  3. C# 操作IitextPdf

    1.读取PDF内容 public string ReadPdfFile(string fileName) { StringBuilder text = new StringBuilder(); if ...

  4. 轻量级运维工具-pssh,pscp,prsync,pslurp,pnuke

    批量执行,并行传输,远程killall #yum安装 yum install pssh -y #yun安装后pscp改名为pscp.pssh #源码编译 wget https://pypi.pytho ...

  5. spring(四)之基于注解(Annotation-based)的配置.md

    注解 这里讲的注解有下面几个 @Autowired @Qualifier(" ") @Genre(" ") @Offline @Resource(name=&q ...

  6. 接口测试(概念、Postman、SoapUI、jmeter)

    一.什么是接口测试 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑 ...

  7. BFC(块级格式化上下文)

    渲染规则 1.内部的box会在垂直方向,一个接一个的放置 2.box垂直方向的距离由margin决定,属于同一个bfc的两个相邻box的margin会发生重叠 3.每个元素的margin box的左边 ...

  8. ceph存储池基本管理

    一,设置默认存储池的pg或pgp的值(推荐100左右),在ceph.conf文件里增加: osd pool default pg num = osd pool default pgp num = 二, ...

  9. 清除(设置)eclipse的workspace记录

    在eclipse文件夹中找到这个文件即可: //eclipse/configuration/.settings/org.eclipse.ui.ide.prefs 用记事本打开这个文件.如果你是第一次打 ...

  10. CentOS7.5 firefox Flash插件更新

    CentOS7自带的firefox没有flash插件,所以是没有办法在网页上看视频的,需要自己手动安装 1.下载 打开flash官网https://get.adobe.com/flashplayer/ ...