首页 > 其他分享 >朋友

朋友

时间:2024-11-24 14:45:29浏览次数:2  
标签:10 le 小明 朋友 int 编号

朋友

题目背景

小明在 A 公司工作,小红在 B 公司工作。

题目描述

这两个公司的员工有一个特点:一个公司的员工都是同性。

A 公司有 \(N\) 名员工,其中有 \(P\) 对朋友关系。B 公司有 \(M\) 名员工,其中有 \(Q\) 对朋友关系。朋友的朋友一定还是朋友。

每对朋友关系用两个整数 \((X_i,Y_i)\) 组成,表示朋友的编号分别为 \(X_i,Y_i\)。男人的编号是正数,女人的编号是负数。小明的编号是 \(1\),小红的编号是 \(-1\)。

大家都知道,小明和小红是朋友,那么,请你写一个程序求出两公司之间,通过小明和小红认识的人最多一共能配成多少对情侣(包括他们自己)。

输入格式

输入的第一行,包含 \(4\) 个空格隔开的正整数 \(N,M,P,Q\)。

之后 \(P\) 行,每行两个正整数 \(X_i,Y_i\)。

之后 \(Q\) 行,每行两个负整数 \(X_i,Y_i\)。

输出格式

输出一行一个正整数,表示通过小明和小红认识的人最多一共能配成多少对情侣(包括他们自己)。

样例 #1

样例输入 #1

4 3 4 2
1 1
1 2
2 3
1 3
-1 -2
-3 -3

样例输出 #1

2

提示

对于 \(30 \%\) 的数据,\(N,M \le 100\),\(P,Q \le 200\);

对于 \(80 \%\) 的数据,\(N,M \le 4 \times 10^3\),\(P,Q \le 10^4\);

对于 \(100 \%\) 的数据,\(N,M \le 10^4\),\(P,Q \le 2 \times 10^4\)。






题解

这题还是套模板
不过,给的数据竟然用正负号区分男女??
因此,这里我采用了新定义一个数gen来区分男女。

代码

#include<iostream>
using namespace std;
int n, m, p, q; int x, y;
int pre1[10010], pre2[10010];


int root(int x, int gen);
void merge(int x, int y, int gen);


int main()
{
    
    cin >> n >> m >> p >> q;

    //初始化,员工只和自己有朋友关系
    for (int i = 1; i <= 10005; i++) {
        pre1[i] = i;
        pre2[i] = i;
    }

    //合并A 公司朋友关系
    for (int i = 1; i <= p; i++){
        cin >> x >> y;
        merge(x, y, 1);
    }

    //合并B 公司朋友关系
    for (int i = 1; i <= q; i++)
    {
        cin >> x >> y;
        merge(-x, -y, 2);//由于B公司员工性别为女,编号为负,所以要取反
    }

    //统计与小明(编号为1)和小红(取反编号为1)的朋友关系数量
    int cnt1 = 0, cnt2 = 0;
    for (int i = 1; i <= 10005; i++) {
        cnt1+=root(i, 1)==root(1, 1);
        cnt2+=root(i, 2)==root(1, 2);
    }

    // 输出能够配成的情侣对数
    cout << min(cnt1, cnt2) << endl;

    return 0;
}

void merge(int x, int y, int gen)
{
    x = root(x, gen);y = root(y, gen);
    if (x == y)return;
    else if(gen == 1)pre1[y] = x;
    else if(gen == 2)pre2[y] = x;
}


int root(int x, int gen)
{
    if (gen == 1)
        return  pre1[x] = pre1[x] == x ? x : root(pre1[x], gen);

    else if (gen == 2)
        return pre2[x] = pre2[x] == x ? x : root(pre2[x], gen);
}

奇怪的是,题设给的n和m我怎么没用到?无所谓了( ᖛ ̫ ᖛ )ʃ)

标签:10,le,小明,朋友,int,编号
From: https://www.cnblogs.com/phuzzz/p/18565809

相关文章

  • uniapp精仿微信源码,基于SumerUI和Uniapp前端框架的一款仿微信APP应用,界面漂亮颜值高,视
    uniapp精仿微信源码,基于SumerUI和Uniapp前端框架的一款仿微信APP应用,界面漂亮颜值高,视频商城小工具等,朋友圈视频号即时聊天用于视频,商城,直播,聊天,等等场景,源码分享sumer-weixin介绍uniapp精仿微信,基于SumerUI3.0和Uniapp前端框架的一款仿微信APP应用,界面漂亮颜值高,视频......
  • 微信又上新:朋友圈支持live图
    朋友圈,动~起~来~了~9月19日,据微信派消息,微信朋友圈可以发实况照片了。话题“微信朋友圈支持live图”登上热搜。有网友表示:“重大更新”“朋友圈新功能,来体验一下”。具体操作↓↓打开朋友圈-从手机相册选择,即可选中并发布实况照片,照片将包含动态画面和声音。发布时,也可以点击关闭实......
  • uniapp精仿微信源码,基于SumerUI和Uniapp前端框架的一款仿微信APP应用,界面漂亮颜值高,视
    uniapp精仿微信源码,基于SumerUI和Uniapp前端框架的一款仿微信APP应用,界面漂亮颜值高,视频商城小工具等,朋友圈视频号即时聊天用于视频,商城,直播,聊天,等等场景,源码分享sumer-weixin介绍uniapp精仿微信,基于SumerUI3.0和Uniapp前端框架的一款仿微信APP应用,界面漂亮颜值高,视频......
  • “精装朋友圈”的年轻人,开始在40度高温买羽绒服
    文|螳螂观察作者|如意人生一世,苦了自己也不能苦朋友圈。这届的年轻人,无论人生有多“毛坯”,都有一个一生要强的朋友圈,而且“装修”朋友圈还有一套哲学,信奉图片精修,排版讲究,文案低调,就连评论区的回复也要字句斟酌。出去旅行,在西藏边吸氧边哭,朋友圈却是一句“永远自由自我,永远高唱......
  • 种草分享|动态朋友圈|瀑布流|uniapp​ V1.0.7
    种草分享评论点赞消息提醒系统,发布动态,分享种草生活,可以收藏关注点赞,消息提醒,同时支持H5/小程序/app多端。V1.0.7修复前端显示问题修复一处三方登录变量赋值问题。......
  • 送给测试行业朋友们的一些中肯建议
    在快速发展的科技时代,软件测试行业也在不断变化。如果你是一名测试人员,或正在考虑进入这个行业,你是否感到迷茫?该如何提升自己,以应对未来的挑战?今天,我为所有测试行业的朋友们带来一些切实的建议,助你们走得更远。作为测试人员,你是否经常面对需求变化、测试工具更新、自动化测试的压......
  • 【喂饭教程】逗女朋友开心的“动态浪漫樱花”代码教程免费发放!
    这个樱花代码不同于普通的生成图片,而是动态的展示其生成过程,更加可以让大家欣赏它的浪漫!大家只要复制代码就可以啦!赶快行动起来吧!(真的是是动态的哦!)axis([-1,5,0,5])set(gca,'XColor','none','YColor','none','Color',[.5,.5,.5])T=[1.2;0;pi/2];a=pi/10;fori=1:16L=......
  • 朋友圈定时发送?一定要学会的宝藏功能简介,赶紧收藏
    作为社交时代的一部分,朋友圈已经成为了我们日常生活中必不可少的交流方式之一。但你是否曾经遇到过这样的问题:朋友圈发布的内容很难吸引到目标受众?那么,不妨试试定时发朋友圈这个神奇的方法,让你轻松拥有高质量的人脉和影响力!定时发朋友圈是一项宝藏时间管理的秘诀。通过......
  • 喜欢干净简洁音乐播放器的朋友看过来
    大家好,我是晓凡。不少程序员小伙伴都喜欢边听音乐边敲代码,尤其在一个嘈杂的环境中,一个好的想法、好的思路可能就因为一瞬间的干扰就没了。这时,如果耳机一戴上,听着音乐能更好的集中注意力;遇到bug也能临危不乱,想出更好的解决办法;网易云音乐,算是一个相对简洁、有趣的播放器了。不......
  • 朋友圈营销发圈时间
    你的好友列表是不是也有N个客户是不是成交了一次还想再成交是不是不好意思天天打扰客户担心被反感不用多说,你经历的这些我都经历过‼️那你一定一定要利用好“朋友圈”这个工具利用好发圈的时间,内容比例,把握好技巧客户会“爱上”你的朋友圈对你这个人产生印象以及好感,才能爆单呀快点......