poj 1904 King's Quest tarjan求二分图的所有可选最大匹配边

二分图匹配算法(C++实现) 基于二分图的常用算法 最大匹配——匈牙利算法 最佳匹配——KM算法 感谢原作者 立即下载

因为是完美匹配,所以每个点都已经匹配了,那么如果要选择一条别的边,增光路的最后必定找到原来所匹配的点,加上匹配的边,那么就是一个环。所以可选边在一个强连通分量里。

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=4e3+9;
int mt[maxn];
int low[maxn],dfn[maxn],instack[maxn],count;
int s[maxn],stack[maxn],top,con;
int head[maxn],lon;
int ans[maxn],n;
struct
{
    int next,to;
}e[200000+maxn];
void edgeini()
{
    memset(head,-1,sizeof(head));
    lon=-1;
}
void edgemake(int from,int to)
{
    e[++lon].to=to;
    e[lon].next=head[from];
    head[from]=lon;
}
void tarjan(int t)
{
    low[t]=dfn[t]=++count;
    instack[t]=1;
    stack[++top]=t;
    for(int k=head[t],u;k!=-1;k=e[k].next)
    {
        u=e[k].to;
        if(dfn[u]==-1)
        {
            tarjan(u);
            low[t]=min(low[t],low[u]);
        }
        else if(instack[u])
        {
            low[t]=min(low[t],dfn[u]);
        }
    }
    if(low[t]==dfn[t])
    {
        ++con;
        while(1)
        {
            int u=stack[top--];
            s[u]=con;
            instack[u]=0;
            if(u==t) break;
        }
    }
}

void tarjan()
{
    memset(dfn,-1,sizeof(dfn));
    memset(instack,0,sizeof(instack));
    top=count=con=0;
    for(int i=1;i<=n;i++)
    if(dfn[i]==-1)
    {
        tarjan(i);
    }
}

int main()
{
//    freopen("in.txt","r",stdin);
    while(scanf("%d",&n)!=EOF)
    {
        edgeini();
        for(int i=1,tmp;i<=n;i++)
        {
            scanf("%d",&tmp);
            for(int j=1,to;j<=tmp;j++)
            {
                scanf("%d",&to);
                edgemake(i,to+n);
            }
        }
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&mt[i]);
            edgemake(mt[i]+n,i);
        }
        tarjan();


        for(int i=1;i<=n;i++)
        {
            memset(ans,0,sizeof(ans));
            int sum=0;
            for(int k=head[i];k!=-1;k=e[k].next)
            {
                int u=e[k].to;
                if(s[i]==s[u])
                {
                    sum++;
                    ans[u-n]=1;
                }
            }
            printf("%d",sum);
            for(int i=1;i<=n;i++)
            if(ans[i])
            printf(" %d",i);
            printf("\n");
        }
    }
    return 0;
}


生物信息学名词解释 | K-mer (长度为k的短序列) K-mer 何谓K-mer 所谓Kmer,即为一段长度为k的DNA片段,是由测序reads剪切一部分得到的。k为一个奇数,k=几,就为几mer。 比如:我的测序reads长度为100bp,我将这100bp打断成17bp的短片段,打断后的17bp段片段就叫17mer,可以获得(100-17+1)条k-mer序列。 Table1 k-mers for GTAGAGCTGT. k k-mers 1 G,T,A,G,A,G,C,T,G,T 3 GTA,TAG,AGA,GAG,AGC,GCT,CT 阅读详情

相关推荐

爬虫小例--爬药监局(上)

”明月如霜,好风如水,清景无限 “ 文远最近也算是爬虫入门吧,相信后面会慢慢熟悉。 壹 直接上例子,爬取药监局的数据。目的是得到每家公司的详情数据,例: 具体网址:http://scxk.nmpa.gov.cn:81/xk/ 这是主页,下面详情信息: 贰 分析,通过网页检查发现,主网页上没有公司相关数据,观察XHR中的Ajax请求发现,公司信息都是动态数据(方便更新),点击发现每个公司 的详情信息通过ID号这个参数区别,那么可以确定思路是先得到每个公司的ID号,然后在通过ID对应每一个详细网站,同样右键

john_ashley的博客 4556

hdu 3861 The King’s Problem (tarjan 算法+二分图最大匹配)

The King’s Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2523    Accepted Submission(s): 905 Problem Description In the Kingd

clover_hxy的博客 582

无限维李代数局部与2-局部1/2-导子:从概念到Witt代数实例解析

在抽象代数与数学物理中,李代数是描述对称性的基本结构,而导子则是刻画其微分性质的核心算子。从经典的导子概念出发,通过引入“局部”与“分数阶”两个关键推广,形成了局部导子、2-局部导子以及1/2-导子等重要研究方向。这些推广不仅深化了对无限维李代数(如Witt代数、Virasoro代数)复杂结构的理解,其研究方法和结论也为共形场论、可积系统等物理理论提供了数学基础。本文聚焦于无限维李代数上局部与2-局部1/2-导子的系统研究,通过拆解核心概念、剖析典型代数结构,并以Witt代数为实例,详细演示了从全局1/2-

weixin_34072296的博客 391

POJ 2195 Going Home(二分图最大权值匹配)

Going Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13981   Accepted: 7156 Description On a grid map there are n little men and n houses. In each unit t...

weixin_34228387的博客 131

Linear超高PSRR线性稳压器-典型应用电路解析

本文整理完了LT3045数据手册内所有的典型应用电路,试图让沉默的电路开口,简单介绍了他们这样做的目的和原理,从中我们可以更加熟悉这颗经典芯片的应用。但也有一些电路并没有搞懂,遗留下了不少问题。

硬件工程师笔记 2939

VL53L1X移植到STM32实战记录,使用软件IIC(附源代码)

序言 VL53L1X是一个很小又很优秀的测距传感器,它相比于上一代VL53L0X有着不小的提升,这次毕业设计打算将这个传感器用起来,就来移植了一下,遇到的坑怎么说还是有一些,故在此分享给大家。 开发环境 IDE:Keil V5 STM32CubeMX ,使用HAL库 具体操作 获取官方库并进行移植 这一步是移植的基础,首先从官方把API库下下来,并添加到IDE中: 适配硬件 这里由于不同的硬件平...

wmdscjhdpy的博客 1万+

poj 1486(求二分图形成匹配的必须边)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3697 题目描述:给你n个幻灯片,每个幻灯片有个数字编号1---n,现在给每个幻灯片用A---Z进行编号,那么问有多少个幻灯片的数字和字母是唯一对应的 分析:求二分

560

PyTorch复现PSMNet踩坑全记录:从环境配置到KITTI数据集训练

本文详细记录了使用PyTorch复现CVPR经典立体匹配模型PSMNet的全过程,从环境配置到KITTI数据集训练,特别针对2023年主流软硬件环境中的常见问题提供解决方案。文章重点介绍了PSMNet的金字塔池化模块和堆叠沙漏结构,帮助研究者和工程师快速实现工业级深度估计,节省大量试错时间。

weixin_30897233的博客 328

二分图(最大匹配、最小点覆盖、最少边覆盖、最大独立集)

P3386 【模板】二分图最大匹配 #include <bits/stdc++.h> using namespace std; int n, m, e, tot, u, v, ans, head[505], pre[505]; //pre[i]存的是右部图中点i所匹配的点 bool vis[505]; //链式前向星存图 struct node{ int to; int next; }edge[50010]; void add_edge(int u, int v) { tot++;

ypeijasd的专栏 530

systemView的安装使用

systemView的安装使用

qq_33712422的博客 3963

基于Simulink的发动机管理系统中的自适应增压控制系统设计

通过上述详细设计步骤,我们成功开发了一个基于Simulink的自适应增压控制系统。该系统不仅能够实时监测和预测发动机的运行状态,动态调整增压压力目标值,还具备实时监控、故障诊断和保护功能,确保系统的安全性和可靠性。此外,通过仿真实验和硬件在环测试,我们验证了系统的性能,并对其进行了优化,使其能够更好地满足实际应用需求。这个项目展示了如何利用MATLAB/Simulink的强大功能,结合控制理论和工程实践,开发出高效、可靠的自适应增压控制系统。

MHD0815的博客 220

POJ-1904 King's Quest

题目: http://poj.org/problem?id=1904 题意: 每个王子都有喜欢的妹子,给出了其中一种匹配方案,要求出每个王子能够娶的所有人,当王子娶这些妹子中的一个时其他王子都有能够娶到的喜欢的妹子。 思路: 这道题的想法很精妙,因为给出了其中一个匹配方案,所以可以通过搜其他可以交换的方案,也就是在同一个强联通分量的点可以互相交换,也就可以被其中的所有王子娶。 也就从一

MyWorld 477

MoveIt 运动学、运动规划、混合规划、move_group

混合规划是运动规划方法的一个术语,它将异构运动规划器结合起来,以产生更稳健或反应更快的解决方案。这种通用方法在导航领域已经非常成熟,并在导航2等流行项目中成功实施。MoveIt 的混合规划架构结合了一对全局规划器和局部规划器,它们以不同的规划速度和问题范围并行、并发运行。全局规划器的任务是解决全局运动规划问题,这与 “感知-规划-行动 ”应用中使用的规划器非常相似。所使用的规划器算法应该是完整的,因此假定其计算时间相对较慢。此外,全局规划器不要求实时安全,这意味着无法保证规划器在特定期限内找到解决方案。

机器人控制与仿真应用 2131

UVA1327 && POJ1904 King's Quest(tarjan+巧妙建图+缩点+强连通分量)

UVA1327 King's Quest POJ1904 King's Quest 题意: 有n个王子,每个王子都有k个喜欢的妹子,每个王子只能和喜欢的妹子结婚。现有一个匹配表,将每个王子都与一个自己喜欢的妹子配对。请你根据这个表得出每个王子可以和几个自己喜欢的妹子结婚,按序号升序输出妹子的编号,这个表应满足所有的王子最终都有妹子和他结婚(一个妹子只能嫁给一个王子)。 看到题目时...

baliu5600的博客 182

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【poj】1904 King's Quest【强连通】

题意:国王有n个王子,王国内有n个妹子,每个王子喜欢一个(些)妹子(们),给出了一个王子与妹子之间的完美匹配.问一个王子可以匹配的妹子有哪些,要求改王子匹配改妹子之后,其他王子仍有妹子可以匹配,仍能够形成完美匹配 题解:题目真是非常的具有误导性,十分容易考虑到二分匹配上去,实际上确是强连通.我们考虑转换原问题,,我们从王子向他喜欢的妹子(们)连一条边,对给出的完美匹配,我们对每一对匹配的王子与妹

a709743744的博客 967

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

King's Quest 【POJ - 1904】【完美匹配的替代方案(Tarjan强联通)】

题目链接 题记 —— 完美匹配:二分图的左右两边的所有结点都能得到对面的结点的匹配,并且每个点仅可使用一次。 题意:有N个王子,N个公主,每个王子都有Ki个自己喜欢的公主,现在国师给他们配对,让每个王子娶到自己的某个心仪的姑娘。但是,王子们的父亲,也就是国王,并不满足于此,他想知道,每个王子最多可以选择哪几个公主中的一个来成亲,使得其他的王子还能娶到自己心仪的姑娘中的一个。简而言之,某个王...

既然弱小,就只顾变强就是了 468

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

POJ 1904 King's Quest强连通分量+二分图完美匹配

题目描述:Description Once upon a time there lived a king and he had N sons. And there were N beautiful girls in the kingdom and the king knew about each of his sons which of those girls he did like. The s

喵头鹰的博客 1079

poj1904 King's Quest 强连通分量

题意: 有n个王子和n个女孩,每个王子可能喜欢多个女孩。 先给出一个初始的完备匹配,问每个王子可以选择哪些女孩(即无论王子选择这些女孩中的哪一个),使得剩下的王子仍能够选择喜欢的女孩。 思路: 每个王子向自己喜欢的每个女孩连边, 对于每一对原配,女孩向王子连边。 然后tarjan求强连通分量,与每个王子在同一强连通分量里的女孩就是答案。 解释: 首先可以看出任何一对原配都可

Shion的专栏 875

King's Quest POJ - 1904 匈牙利算法的思想+tarjan缩点+染色

题目链接:https://cn.vjudge.net/problem/POJ-1904 自己一开始的想法,打算用匈牙利算法实现,找二分图的最大匹配。但是打了打发现,不太好实现。原因如下:匈牙利算法是不停的找增广路。如果这个题用匈牙利算法实现的时候,就是这个地方: 1 bool Find(int t) 2 { 3 for(int i=1; i<=m; i++...

diaomeijiao3430的博客 236

[poj 1904]King's Quest[Tarjan强连通分量]

题意:(当时没看懂...) N个王子和N个女孩, 每个王子喜欢若干女孩. 给出每个王子喜欢的女孩编号, 再给出一种王子和女孩的完美匹配. 求每个王子分别可以和那些女孩结婚可以满足最终每个王子都能找到一个自己喜欢的女孩结婚.(需要避免的情况就是某个王子和自己喜欢的某个女孩结婚之后使得最终无法找到一个完美匹配) 思路:(非独立思考想出...) 将初始的每个完美匹配视为1个节点, u -> v表示u中的王子喜欢v中的女孩, 求这样一个图的强连通分量. 输出每个王子喜欢的,并且和他所在节点在同一个强连通分量中

以中有足乐者... 881

UVA1327 && POJ1904 King's Quest(tarjan+巧妙建图+强连通分量+缩点)

UVA1327 POJ1904 题意: 有n个王子,每个王子都有k个喜欢的妹子,每个王子只能和喜欢的妹子结婚。现有一个匹配表,将每个王子都与一个自己喜欢的妹子配对。请你根据这个表得出每个王子可以和几个自己喜欢的妹子结婚,按序号升序输出妹子的编号,这个表应满足所有的王子最终都有妹子和他结婚(一个妹子只能嫁给一个王子)。 看到题目时,一脸懵逼,只觉得题面很有(ci)趣(ji) 但没办法啊,为了...

think_twcie的博客 296

POJ 1904 King's Quest【Tanjar】

传送门   Description Once upon a time there lived a king and he had N sons. And there were N beautiful girls in the kingdom and the king knew about each of his sons which of those girls he did like. T...

qq_42211531的博客 207

poj1904 - King's Quest

想看更多的解题报告: http://blog.youkuaiyun.com/wangjian8006/article/details/7870410                                   转载请注明出处:http://blog.youkuaiyun.com/wangjian8006 题目大意:国王有n个儿子,现在这n个儿子要在n个女孩里选择自己喜欢的,有的儿子可能喜欢多个,最后国王的

贰圣 3508

POJ 1904 King's Quest 强连通分量 好题

题目:http://poj.org/problem?id=1904 题意:一个国王有n个王子,同时有n个女孩。每个王子都有自己喜欢的若干个女孩,现给定一个合法的完备匹配(也就是一个王子娶其中一个自己喜欢女孩),求每个王子可以选择哪些女孩可以让剩下的每个王子依旧能够选择到自己喜欢的一个女孩。 思路:这道题并不会啊,我还以为是二分图匹配,居然用强连通分量去做。如果王子u喜欢妹子v,

弱智就要多努力 792

POJ 1904 King's Quest

Description Once upon a time there lived a king and he had N sons. And there were N beautiful girls in the kingdom and the king knew about each of his sons which of those girls he did like. The sons o...

PCCCCC的博客 153
上一篇: poj 2226 二分图匹配
下一篇: poj 1639 Picnic Planning
yrleep
博客等级 码龄14年 15粉丝 275原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值