描述

“每个人都拥有一个梦,即使彼此不相同,能够与你分享,无论失败成功都会感动。爱因为在心中,平凡而不平庸,世界就像迷宫,却又让我们此刻相逢Our Home。”

在爱的国度里有N个人,在他们的心中都有着一个爱的名单,上面记载着他所爱的人(不会出现自爱的情况)。爱是具有传递性的,即如果A爱B,B爱C,则A也爱C。

如果有这样一部分人,他们彼此都相爱,则他们就超越了一切的限制,用集体的爱化身成为一个爱心天使。

现在,我们想知道在这个爱的国度里会出现多少爱心天使。而且,如果某个爱心天使被其他所有人或爱心天使所爱则请输出这个爱心天使是由哪些人构成的,否则输出-1。

格式

输入格式

第1行,两个数N、M,代表爱的国度里有N个人,爱的关系有M条。

第2到第M+1行,每行两个数A、B,代表A爱B。

输出格式

第1行,一个数,代表爱的国度里有多少爱心天使。

第2行,如果某个爱心天使被其他所有人和爱心天使所爱则请输出这个爱心天使是由哪些人构成的(从小到大排序),否则输出-1。

输入:

6 7
1 2
2 3
3 2
4 2
4 5
5 6
6 4

输出:

2
2 3

思路:与POJ2186大同小异

#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
const int MAXN=;
int mp[MAXN][MAXN];
int n,m;
int dfn[MAXN],low[MAXN],index;
int stack[MAXN],top;
bool ins[MAXN];
int belong[MAXN],cnt;
void tarjan(int u)
{
dfn[u]=low[u]=++index;
stack[top++]=u;
ins[u]=true;
for(int i=;i<=n;i++)
{
if(mp[u][i])
{
if(!dfn[i])
{
tarjan(i);
low[u]=min(low[u],low[i]);
}
else if(ins[i]) low[u]=min(low[u],dfn[i]);
}
}
if(dfn[u]==low[u])
{
int v;
++cnt;
do{
v=stack[--top];
ins[v]=false;
belong[v]=cnt;
}while(u!=v);
}
}
int outdeg[MAXN];
int times[MAXN];
void solve()
{
for(int i=;i<=n;i++)
{
times[belong[i]]++;
for(int v=;v<=n;v++)
{
if(mp[i][v])
{
if(belong[i]!=belong[v])
{
outdeg[belong[i]]++;
}
}
}
}
int res1=;
for(int i=;i<=cnt;i++)
{
if(times[i]>)
res1++;
}
printf("%d\n",res1);
int mark;
int res2=;
for(int i=;i<=cnt;i++)
{
if(outdeg[i]==&&times[i]>)
{
res2++;
mark=i;
}
}
if(res2==)
{
for(int i=;i<=n;i++)
{
if(belong[i]==mark)
printf("%d ",i);
}
}
else printf("-1");
printf("\n");
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<m;i++)
{
int u,v;
scanf("%d%d",&u,&v);
mp[u][v]=;
}
for(int i=;i<=n;i++)
if(!dfn[i])
tarjan(i);
solve();
return ;
}

最新文章

  1. mapReduce编程之auto complete
  2. requirejs学习
  3. 10.23lamp环境
  4. Python排列组合实验
  5. Linux Command Line 备忘
  6. http://www.linuxso.com/linuxpeixun/10332.html
  7. Java 性能要点:自动装箱/ 拆箱 (Autoboxing / Unboxing)
  8. ASP.NET-FineUI开发
  9. CSS3动画详解(超详细)
  10. api-gateway实践(01)服务网关 - 原型功能
  11. golang 线程与通道
  12. jenkin服务关闭和重启
  13. 实用的shell脚本面试题和答案
  14. android 无法import
  15. MAVEN 创建项目
  16. JAVA个人小程序GUI篇-收银(标签、按钮、复选框、下拉标、文本域、表格&#183;&#183;&#183;&#183;&#183;&#183;)
  17. CEO、COO、CFO、CTO、CXO
  18. 一致性哈希算法(consistent hashing)(转)
  19. Delphi for iOS开发指南(4):在iOS应用程序中使用不同风格的Button组件
  20. UWP 应用程序名称本地化以及商店显示名称本地化

热门文章

  1. ckdeitor的使用方法
  2. 深入详解WPF ControlTemplate
  3. 【峰回路转】Excel技巧百例 08.计算两个日期的差值
  4. TP框架部分---空控制器
  5. JS基础知识再整理..........不断更新中
  6. delphi 颜色 引用http://www.cnblogs.com/del/archive/2008/02/19/1073568.html
  7. 九度OJ 1152:点菜问题 (01背包、DP)
  8. 性能测试--Jmeter随机生成/随机选取/csv读取关键字
  9. 【题解】CF559C C. Gerald and Giant Chess(容斥+格路问题)
  10. VirtualBox创建VM结果ProcessorType是空的