题意:
      有n个王子,n个公主,然后给你每个王子喜欢的公主,最后问你在不影响最大匹配的前提下,每个王子可以匹配那些公主。

思路:

      是hdu4685的减弱版,之前研究过hdu4685所以这个题目直接水过了,对于这个题目,我们把王子和他喜欢的公主之间建连边,建立一个二分图,然后对于题目给的已经匹配好了的(有的题目没给,直接就自己跑一边二分匹配自己找),之间建立反边,就是建立公主到王子的边,然后一遍强联通,如果同意个分量里的男女可以匹配。这样记录每一个然后sort一下就行了。

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stack>#define N_node 5000
#define N_edge 1000000using namespace std;typedef struct
{int to ,next;
}STAR;STAR E1[N_edge] ,E2[N_edge];
int list1[N_node] ,list2[N_node] ,tot;
int Belong[N_node] ,cont;
int mark[N_node];
int ans[N_node];
stack<int>st;void add(int a ,int b)
{E1[++tot].to = b;E1[tot].next = list1[a];list1[a] = tot;E2[tot].to = a;E2[tot].next = list2[b];list2[b] = tot;
}void DFS1(int s)
{mark[s] = 1;for(int k = list1[s] ;k ;k = E1[k].next){int to = E1[k].to;if(!mark[to]) DFS1(to);}st.push(s);
}void DFS2(int s)
{mark[s] = 1;Belong[s] = cont;for(int k = list2[s] ;k ;k = E2[k].next){int to = E2[k].to;if(!mark[to]) DFS2(to);}
}int main ()
{int n ,i ,j ,a ,nn;while(~scanf("%d" ,&n)){memset(list1 ,0 ,sizeof(list1));memset(list2 ,0 ,sizeof(list2));tot = 1;for(i = 1 ;i <= n ;i ++){scanf("%d" ,&nn);for(j = 1 ;j <= nn ;j ++){scanf("%d" ,&a);add(i ,a + n);}}for(i = 1 ;i <= n ;i ++){scanf("%d" ,&a);add(a + n ,i);}memset(mark ,0 ,sizeof(mark));while(!st.empty()) st.pop();for(i = 1 ;i <= n + n ;i ++){if(!mark[i]) DFS1(i);}memset(mark ,0 ,sizeof(mark));cont = 0;while(!st.empty()){int to = st.top();st.pop(); if(!mark[to]){cont ++;DFS2(to);}}      for(i = 1 ;i <= n ;i ++){int tt = 0;for(int k = list1[i] ;k ;k = E1[k].next){int to = E1[k].to;if(Belong[i] == Belong[to])ans[++tt] = to - n;}sort(ans + 1 ,ans + tt + 1);printf("%d" ,tt);for(j = 1 ;j <= tt ;j ++)printf(" %d" ,ans[j]);puts("");}}return 0;
}

POJ1904 强联通(最大匹配可能性)相关推荐

  1. BZOJ 2140 稳定婚姻(强联通分量判环)【BZOJ修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2140 是 hydro 的 BZOJ ...

  2. [HDOJ6165] FFF at Valentine(强联通分量,缩点,拓扑排序)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6165 题意:问一个有向图中是否有任意两点可以到达. 读错题就彻底输了,读成判断是否有任意条路,使得经过 ...

  3. poj2186强联通(牛仰慕)

    题意:       有一群老牛,他们之间有m组敬仰关系,关系可以传递,a仰慕b,b仰慕c,那么a就仰慕c,现在问被所有老牛都仰慕 的有多少? 思路:       想想,是不是一个环中的老牛的关系都是一 ...

  4. POJ2186 强联通

    题意:       有一群老牛,给你一些关系,a b表示牛a仰慕牛b,最后问你有多少个牛是被所有牛仰慕的. 思路:       假如这些仰慕关系不会出现环,那么当且仅当只有一只牛的出度为0的时候答案才 ...

  5. [拓扑排序/强联通分量] [NOIP201402] 信息传递

    信息传递 题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日 ...

  6. POJ 2186 popular cow 有向图的强联通问题 Tarjan算法

    参考:http://hi.baidu.com/1093782566/blog/item/e5a0e9229913bd048b82a175.html http://www.cppblog.com/Iro ...

  7. [图论]强联通分量+缩点 Summer Holiday

    Summer Holiday Description 听说lcy帮大家预定了新马泰7日游,Wiskey真是高兴的夜不能寐啊,他想着得快点把这消息告诉大家,虽然他手上有所有人的联系方式,但是一个一个联系 ...

  8. CodeForces 1213F (强联通分量分解+拓扑排序)

    传送门 •题意 给你两个数组 p,q ,分别存放 1~n 的某个全排列: 让你根据这两个数组构造一个字符串 S,要求: (1)$\forall i \in [1,n-1],S_{pi}\leq S _ ...

  9. 无向图强联通分量-洛谷 P2860 [USACO06JAN]冗余路径Redundant Paths

    https://www.luogu.org/problem/show?pid=2860 这个就是无向图的强联通: 有向图的两点再一个分量里,是x可以到y,y也可到x: 但无向图本来就是双向的,所以我们 ...

最新文章

  1. MYSQL性能优化详解(二)
  2. Android持久化保存cookie
  3. mysql 怎么查询慢sql语句_如何优化MySQL中查询慢的SQL语句啊?
  4. python小程序设计4s店_python自写的车牌识别小程序,完全自主实现。图片处理
  5. HDOJ--1599--find the mincost route(floyd+最小环)
  6. [转]VC6.0编译fltk-1.1.10
  7. Style 的查找 FindResource
  8. Python爬取百度文库doc文档
  9. TestStand版本切换注意事项(重启电脑)
  10. 威金敌敌畏--比特解决威金方案(转)
  11. 短视频的海绵宝宝配音怎么制作?这可能是最容易上手的配音教程
  12. Starting sshd: Missing privilege separation directory: /var/empty/sshd
  13. 华为od统一考试B卷【分积木】C++ 实现
  14. 红米4手机(其它小米应该一样)adb 调试(usb ,tcp)
  15. BGP协议详解(一)
  16. Windows下的远程命令行工具pstools
  17. 洛谷P1080 [NOIP2012 提高组] 国王游戏(贪心,高精度)
  18. 【乐逍遥网站设计】网站设计一般多少钱
  19. android直播app下载地址,g直播app官方下载安装
  20. 英特尔傲腾,给内存和存储间加点“料”

热门文章

  1. python 模拟抽象类
  2. Windows Server 2003 备份和恢复的最佳做法
  3. 【python】关于控制台的中文输出出现\x形式的问题 python常用包与如何安装
  4. 从ftp获取文件并生成压缩包
  5. SQL Cache Invalidation
  6. 面向 Photoshop 的英特尔® Texture Works 插件
  7. hive数据倾斜的解决办法
  8. INotifyPropertyChanged 接口 CallerMemberName属性
  9. Bootstrap—基础样式定义
  10. 用Greasemonkey脚本收藏网站会员信息到本地