POJ 1904 【强连通分量】.cpp

题意:

  很久很久以前..

  有一个国王..

  他有好几个儿子..

  这些王子都喜欢上了邻国的公主..

  他们准备迎娶自己喜欢的公主中的一个..

  国王就让宰相给列一个清单..

  

  宰相就给了国王一个清单..上面写明了哪个王子将迎娶哪个邻国的公主..

  但是调皮的国王不太满意~~

  他还想知道他的儿子分别可以迎娶哪几个公主中的一个而不会让他的兄弟因此而吃醋..

  所以宰相又得重新写清单了..

 

  噢..对了~邻国的公主和王子人数一样多~<这是一个奇怪的国家..>

  输入:

  一个n表示有n个王子..

  接下来n行每行有一个m表示第i个王子喜欢m个公主..

  然后给出m个公主的序号..

  最后一行有n个数..代表第i个王子最后迎娶了的公主..

 

  输出:

  n行..每行第一个是m 表示有m个公主他可以选择~

  然后m个数是公主的序号..

  P.S 麻烦的国王还要求公主序号按从小到大给出..

<这是一些花心的王子..= =!! 可恨..>

 

思路:

  求强连通分量..

  王子和喜欢的公主连边..

  最后娶了的公主和该王子之间也连边..

  然后每个强连通分量就是他可以选择的公主序号..

 

Tips:

  因为类似拆点了..所以数组要开大一点..

 

Code:

View Code
  1 #include <stdio.h>
  2 #include <cstring>
  3 #include <algorithm>
  4 using namespace std;
  5 const int INF = 0x1f1f1f1f;
  6 #define clr(x) memset(x, 0, sizeof(x))
  7 const int MAXN = 2010*3;
  8 
  9 struct Edge
 10 {
 11     int to;
 12     int next;
 13 }edge[10000010];
 14 int head[MAXN];
 15 int tot;
 16 
 17 void add(int s, int u)
 18 {
 19     edge[tot].to = u;
 20     edge[tot].next = head[s];
 21     head[s] = tot++;
 22 }
 23 
 24 int dfn[MAXN], low[MAXN];
 25 int ins[MAXN], sta[MAXN], col[MAXN];
 26 int ti, top, cnt;
 27 int n;
 28 
 29 void tarjan(int u)
 30 {
 31     int i, k;
 32     dfn[u] = low[u] = ++ti;
 33     ins[u] = 1;
 34     sta[++top] = u;
 35     for(i = head[u]; i != -1; i = edge[i].next) {
 36         k = edge[i].to;
 37         if(dfn[k] == 0) {
 38             tarjan(k);
 39             low[u] = min(low[u], low[k]);
 40         } else if(ins[k]) {
 41             low[u] = min(low[u], dfn[k]);
 42         }
 43     }
 44     if(dfn[u] == low[u]) {
 45         cnt++;
 46         do
 47         {
 48             k = sta[top--];
 49             col[k] = cnt;
 50             ins[k] = 0;
 51         }while(u != k);
 52     }
 53 
 54 }
 55 
 56 void solve()
 57 {
 58     int i, k;
 59     ti = top = cnt = 0;
 60     clr(dfn);
 61     for(i = 1; i <= n; ++i)
 62         if(!dfn[i])
 63             tarjan(i);
 64 }
 65 
 66 int main()
 67 {
 68     int i, j, k;
 69     int a, m;
 70     int mar;
 71     int ans[MAXN];
 72     while(scanf("%d", &n) != EOF)
 73     {
 74         tot = 0;
 75         memset(head, 0xff, sizeof(head));
 76 
 77         for(i = 1; i <= n; ++i) {
 78             scanf("%d", &m);
 79             while(m--) {
 80                 scanf("%d", &a);
 81                 add(i, a+n);
 82             }
 83         }
 84         for(i = 1; i <= n; ++i) {
 85             scanf("%d", &mar);
 86             add(mar+n, i);
 87         }
 88 
 89         solve();
 90 
 91         int tmp;
 92         for(i = 1; i <= n; ++i) {
 93             tmp = 0;
 94             for(j = head[i]; j != -1; j = edge[j].next) {
 95                 k = edge[j].to;
 96                 if(col[i] == col[k])
 97                     ans[tmp++] = k;
 98             }
 99             sort(ans, ans+tmp);
100             printf("%d", tmp);
101             for(j = 0; j < tmp; ++j)
102                 printf(" %d", ans[j]-n);
103             puts("");
104         }
105     }
106     return 0;
107 }

 

 

题目链接:http://poj.org/problem?id=1904

转载于:https://www.cnblogs.com/Griselda/archive/2012/10/05/2711974.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电梯里为什么放镜子?90%的人都不知道

全世界只有3.14 % 的人关注了爆炸吧知识随着高层建筑不断的拔地而起我们每天可能会上下十几层的高楼人们当然不想去爬楼梯所以电梯已成为生活中必不可少的一部分▼我们几乎每天都会坐电梯上班时、回家时、逛街时当我们每走进电梯时第一动作都会干什么呢大概都会先看自己的妆容再…

WPF中的命令(Command)

这节来讲一下WPF中的命令(Command)的使用。【认识Command】我们之前说过&#xff0c;WPF本身就为我们提供了一个基础的MVVM框架&#xff0c;本节要讲的命令就是其中一环&#xff0c;通过在ViewModel中声明命令&#xff0c;从View中使用Binding绑定命令&#xff0c;就能实现从Vi…

PHP中 对象自动调用的方法:__set()、__get()、__tostring()

总结&#xff1a; &#xff08;1&#xff09;__get($property_name)&#xff1a;获取私有属性$name值时&#xff0c;此对象会自动调用该方法&#xff0c;将属性name值传给参数$property_name&#xff0c;通过这个方法的内部 执行&#xff0c;返回我们传入 的私有属性的值。 &am…

xhprof php性能分析工具

先安装libpng*下载安装xhprofwget http://pecl.php.net/get/xhprof-0.9.2.tgztar zxf xhprof-0.9.2.tgzcd xhprof-0.9.2cp -r xhprof_html xhprof_lib cd extensionphpize./configuremakemake install编辑php.ini[xhprof]extensionxhprof.so;; directory used by default imple…

matlab中给图像加几个矩形框_没想到!PPT中的这个效果,用好了,简直就是渣图美化器...

相信大家一定看到过&#xff0c;透过磨砂玻璃呈现在眼前的景色&#xff0c;是不是有种朦胧美&#xff1f;其实&#xff0c;在PPT中你也可以复刻出这样的效果。例如&#xff0c;这样的PPT页面&#xff1a;把背景虚化掉&#xff0c;更加突出主题。你想知道PPT中的磨砂效果&#x…

【转贴】mysql导入数据load data infile用法

mysql导入数据load data infile用法 基本语法&#xff1a;load data [low_priority] [local] infile file_name txt [replace | ignore]into table tbl_name[fields[terminated byt][OPTIONALLY] enclosed by ][escaped by\ ]][lines terminated byn][ignore number lines][(co…

宝贝,我帮你清了购物车哦!

1 一场意外让本不富裕的女朋友雪上加霜甚至还回复了单身▼2 外甥女去参加舅舅的婚礼发现账本上没有她的名字于是写上自己的名字并随了兜里所有的钱人情世故整的明明白白▼3 我感觉再多吹几首他们就能复合......▼4 在家隔离第N天果然天下沙雕是一家▼5 我猜中了开头但没猜…

Dapr牵手.NET学习笔记:Actor小试

Actor模型是一种避免线程共享数据&#xff0c;相同Actor实体串行化的方案&#xff0c;所以不便dapr的其他功能&#xff0c;几乎都是非编程入侵的&#xff0c;相反&#xff0c;Dapr Acror深度定制的&#xff0c;关于Actor&#xff0c;.net中有一些通用框架&#xff0c;比如Akka.…

认识Linux下的各种系统服务

只要是linux系统、不管什么发行版本&#xff0c;都有以下的系统服务。本文将对这些服务逐一进行说明。推荐花一些时间来了解这些服务的作用&#xff0c;以便清楚的知道自己该使用哪些服务。 NetworkManager, NetworkManagerDispatcherNetworkManager是一个后台服务程序&#xf…

黄聪:wordpress如何开启文章格式post format

发现很多“古老”的WordPress主题使用量非常大&#xff0c;虽然部分也在随着WordPress版本的升级而“升级”&#xff0c;只不过是修复了bug而已&#xff0c;wordpress的新特性并没有使用。而且多数国内的wordpress主题制作者&#xff0c;也都是在这些主题的基础上进行创作&…

11没有源码注释_我们为什么要看源码、应该如何看源码?

看源码的意义看源码只是一种方法、手段&#xff0c;而不是目的。我也曾经给自己制定过“阅读xxx源码”的目标&#xff0c;现在看起来真的很蠢&#xff0c;一点不smart&#xff08;specific、measurable、attainable、relevant、time-bound&#xff09;。只有搞清楚了阅读代码的…

如果你没空读书,就一定要来看看这8个公众号!

全世界只有3.14 % 的人关注了爆炸吧知识不管世界变化多块&#xff0c;阅读仍是个不过时的动作。今天就为大家推荐几个优质公众号&#xff0c;从社会热点、读书成长、生活新知&#xff0c;你的碎片化时间&#xff0c;我们包了&#xff01;一起来看看呀~♥长按二维码&#xff0c;…

03Prism WPF 入门实战 - Region

1.概要源码及PPT地址&#xff1a;https://github.com/JusterZhu/wemail视频地址&#xff1a;https://www.bilibili.com/video/BV1KQ4y1C7tg?sharesourcecopyweb&#xff08;1&#xff09;Prism概览Application&#xff1a;我们开发应用程序&#xff0c;初始化Bootstrapper。Bo…

CentOS利用crontab执行计划任务

walker的需求是每天1点钟的时候&#xff0c;执行一个shell脚本&#xff0c;下面记录walker用到的基本功能。1、安装yum install crontabs2、服务相关/sbin/service crond status #查看任务状态 /sbin/service crond start #启动服务 /sbin/service crond stop …

10月Web服务器调查:Apache下降 Ngnix攀升

来自netcraft的消息&#xff0c;在2010年10月份的Web服务器市场调查中&#xff0c;在232,839,963个网站中&#xff0c;仍有69.8%的站点在使用 Apache服务器&#xff0c;相比于上个月&#xff0c;其市场份额增长了大约1个百分点&#xff0c;Ngnix也有较小幅度的增长&#xff0c;…

四元数左乘右乘_四元数、欧拉角学习笔记个人理解

一、背景知识&#xff1a;点乘、叉乘复数的点乘&#xff1a;(aibjck)•(xiyjzk)-(axbycz)复数的叉乘&#xff1a;(aibjck)(xiyjzk)(ax)ii(ay)ij(az)ik(bx)ji(by)jj(bz)jk(cx)ki(cy)kj(cz)kkijk三轴定义如上图所示。满足右手螺旋定则&#xff1a;(这个不是太明白&#xff0c;但是…

Python深度学习029:pytorch中常用的模块或方法

PyTorch是一个广泛使用的深度学习库,提供了许多用于构建和训练神经网络的模块和方法。下面是一些PyTorch中常用的模块和方法的简要介绍: PyTorch常用模块和方法 torch 用途:PyTorch的基础模块,提供了多种数学运算功能。常用方法: torch.tensor():创建张量torch.randn():…

struts2 标签不能使用EL 表单式

<c:forEach items"${requestScope.dataitemList}" var"item" varStatus"i" >//使用c:set 标签注意使用Scope属性 不然在request里面取不到值。 <s:select id"type%{#attr.i.index}" name"dataitemType" list"…

【转载】Android设计中的.9.png

转载自&#xff1a;腾讯ISUX (http://isux.tencent.com/android-ui-9-png.html) 在Android的设计过程中&#xff0c;为了适配不同的手机分辨率&#xff0c;图片大多需要拉伸或者压缩&#xff0c;这样就出现了可以任意调整大小的一种图片格式“.9.png”。这种图片是用于Android开…

如果你没空看书,我强烈建议你做这件事!

知乎上有个高赞问题&#xff1a;有哪些书看完后&#xff0c;会让人后悔没早看到&#xff1f;答案各有不一、包罗万象。但有一点&#xff0c;大家达成了共识&#xff1a;要多读书。人生漫长&#xff0c;而我们都不会是一成不变的&#xff0c;真正决定人与人之间的差距的&#xf…