【codevs2822】爱在心中 tarjan 缩点+理解

【codevs2822】爱在心中

题目描述 Description

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

在爱的国度里有N个人,在他们的心中都有着一个爱的名单,上面记载着他所爱的人(不会出现自爱的情况)。爱是具有传递性的,即如果A爱B,B爱C,则A也爱C。
如果有这样一部分人,他们彼此都相爱,则他们就超越了一切的限制,用集体的爱化身成为一个爱心天使。
现在,我们想知道在这个爱的国度里会出现多少爱心天使。而且,如果某个爱心天使被其他所有人或爱心天使所爱则请输出这个爱心天使是由哪些人构成的,否则输出-1。

输入描述 Input Description

第1行,两个数N、M,代表爱的国度里有N个人,爱的关系有M条。
第2到第M+1行,每行两个数A、B,代表A爱B。

输出描述 Output Description

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

样例输入 Sample Input

样例输入1:

6 7
1 2
2 3
3 2
4 2
4 5
5 6
6 4
样例输入2:

3 3
1 2
2 1
2 3

样例输出 Sample Output

样例输出1:

2
2 3

样例输出2:

1
-1

代码

#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <queue>
#include <typeinfo>
#include <map>
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
#define inf 10000000
inline ll read()
{ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
//***************************************************************struct ss
{int u,to,next;
} e[50001];
int out[40001];
int head[50001],vis[50001],dfn[50001],low[50001],belong[50001],hav[50001];
int q[50001],inq[50001];
int t=1,bcnt,cnt,n,m,top;
void add(int u,int v)
{e[t].to=v;e[t].u=u;e[t].next=head[u];head[u]=t++;
}
void dfs(int u)
{vis[u]=inq[u]=1;low[u]=dfn[u]=++cnt;q[++top]=u;for(int i=head[u]; i; i=e[i].next){if(!vis[e[i].to]){dfs(e[i].to);low[u]=min(low[u],low[e[i].to]);}else if(inq[e[i].to])low[u]=min(low[u],dfn[e[i].to]);}int v=-1;if(low[u]==dfn[u]){bcnt++;while(v!=u){v=q[top--];inq[v]=0;belong[v]=bcnt;hav[bcnt]++;}}
}
void rebuild()
{for(int i=1; i<=m; i++){if(belong[e[i].u]!=belong[e[i].to]){out[belong[e[i].u]]++;}}
}
void tarjan()
{for(int i=1; i<=n; i++){if(!vis[i]){dfs(i);}}rebuild();
}
void work()
{int res=0;int ans;for(int i=1; i<=bcnt; i++){if(out[i]==0){ans=i;res++;}}int bb=0;for(int i=1;i<=bcnt;i++){if(hav[i]>=2)bb++;}cout<<bb<<endl;if(res==1){if(hav[ans]!=1){int kk=0;int hh[50001];for(int i=1; i<=n; i++){if(belong[i]==ans){hh[++kk]=i;}}for(int i=1; i<kk; i++){printf("%d ",hh[i]);}cout<<hh[kk]<<endl;}else cout<<-1<<endl;}else cout<<-1<<endl;
}
int main()
{int u,v;scanf("%d%d",&n,&m);for(int i=1; i<=m; i++){scanf("%d%d",&u,&v);add(u,v);}tarjan();work();return 0;
}

 

转载于:https://www.cnblogs.com/zxhl/p/4730923.html

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

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

相关文章

Django中间件与python日志模块 介绍

一、Django中间件 1.1 介绍 Django中的中间件是一个轻量级、底层的插件系统&#xff0c;介于request与response处理之间的一道处理过程&#xff08;用来处理特定业务的请求和响应&#xff09;。中间件的设计为开发者提供了一种无侵入式的开发方式&#xff0c;增强了Django框架…

无人系统自主性研究综述

来源&#xff1a;人机与认知实验室一、引言2012年7月&#xff0c;美国国防科学委员会发布了《自主性在国防部无人系统中的地位》&#xff0c;进一步指出自主能力是美军无人系统中的核心能力&#xff0c;分析了自主能力给无人机(UAV)、无人地面系统(UGS)、无人海上平台(UMV)和无…

hdu - 2667 Proving Equivalences(强连通)

http://acm.hdu.edu.cn/showproblem.php?pid2767 求至少添加多少条边才能变成强连通分量.统计入度为0的点和出度为0的点,取最大值即可. 1 #include <iostream>2 #include <cstdio>3 #include <cmath>4 #include <vector>5 #include <cstring>6 …

HTTP状态码表格汇总

HTTP状态码 一、介绍 ​ 状态码的职责是当客户端向服务器端发送请求时&#xff0c;描述返回的请求结果。借助状态码&#xff0c;用户可以知道服务器端是正常处理了请求&#xff0c;还是出现了错误。 【注意】 状态码是&#xff1a;服务端向客户端发送的反映响应结果的标识码…

一文看尽微软开发者大会 让AI和云驱动一切

来源 | 网易智能一年一度的微软开发者大会Build 2019在美国华盛顿州雷德蒙德拉开帷幕&#xff0c;微软公司CEO萨提亚纳德拉&#xff08;Satya Nadella&#xff09;介绍和发布了一系列全新技术&#xff0c;并在现场展示了以客户为中心的智能体验全新解决方案。微软此次发布的新功…

爬虫文档学习 xpath bs4 selenium scrapy...

爬虫 一、介绍 1、什么是爬虫 1.1 爬虫(Spider)的概念 爬虫用于爬取数据&#xff0c; 又称之为数据采集程序。 爬取的数据来源于网络&#xff0c;网络中的数据可以是由Web服务器&#xff08;Nginx/Apache&#xff09;、数据库服务器(MySQL、Redis)、索引库&#xff08;Ela…

用人工神经网络控制真实大脑,MIT的科学家做到了

来源&#xff1a;网络大数据三位研究者分别是 MIT 大脑与行为科学系主任 James DiCarlo、MIT 博士后 Pouya Bashivan 和 Kohitij Kar。相关论文发表在 5 月 2 日 Science 的网络版上。论文链接&#xff1a; http s://www.biorxiv.org/content/10.1101/461525v1研究人员表示&…

学习卫星菜单

学会坚持的自己写的底部中间菜单 转自http://www.cnblogs.com/persist-confident/p/4487386.html 看了hyman老师的视频&#xff0c;听起来有点迷糊&#xff0c;所以就想把实现卫星菜单的实现总结一下。长话短说&#xff0c;下面总结一下&#xff1a; 一、自定义ViewGroup1&…

Python 的垃圾回收回收机制(源码)

python内存管理及垃圾回收 1. 引用计数器 1.1 环状双向连表 refchain 在python程序中创建的任何对象都会放在refchain链表中&#xff0c;并且可以通过这个对象访问到上一个和下一个对象。 name 张三 age 18 hobby [美女,吃饭]内部会建立一些数据 -打包 C语言叫做结构体-…

未来五年人工智能将实现的五大突破

来源&#xff1a;资本实验室不论是可以和你对话的智能音箱&#xff0c;还是能够自己作画的虚拟艺术家&#xff1b;不论是能够帮助农民准确判断种植和施肥时间的农场管理系统&#xff0c;又或者是能够在演唱会现场快速识别罪犯的人脸识别程序&#xff0c;人工智能已经开始在各行…

NSNumber, NSValue的使用

NSNumber NSNumber *n [NSNumber numberWithDouble:10.5]; int d [n doubleValue];int a 20; NSString *str [NSString stringWithFormate:"%d", a]; //string转int ["20" intValue];//转化成NSNumber 10 YES A "A"int value 100; (value)N…

python面试常问

一、Python基础部分 1. 数据类型 数字类型(Numbers)&#xff1a; 整数(int), 浮点数(float), 复数(complex) 布尔(Booleans)&#xff1a; True和False 字符串(Str)&#xff1a;Uniconde字符序列, 在引号内包含 列表(list)&#xff1a; 有序的值的序列 元组(Tuples)&#x…

springJDBC一对多关系,以及Java递归,jsp递归的实现

maven编译&#xff0c;springMVCspringspringJDBC框架。 要实现的功能是一个文件夹下&#xff0c;可能显示n个文件夹&#xff0c;每个文件夹下又可能显示n个文件夹。。。。 前台效果&#xff1a; controller中的方法如下&#xff1a; RequestMapping(value"/index",m…

未来全球15大热门研究方向出炉!

转自&#xff1a;科学网&#xff08;sciencenet-cas&#xff09;要点速览伦敦、纽约、新加坡、香港、巴黎、北京、东京、迪拜、上海、柏林、波士顿&#xff0c;这些国际性大都市在科技创新方面的表现如何&#xff1f;它们主要关注哪些研究方向&#xff1f;15大科技创新策源点&a…

Django-rest framework

Django-rest Framework 1. FBV CBV 1.1 开发模式 普通开发方式&#xff08;前后端放在一起写&#xff09;前后端分离 1.2 后端开发 为前端提供URL&#xff08;API/接口的开发&#xff09; 注&#xff1a;永远返回HttpResponse 1.3 Django FBV、CBV # FBV(function base …

常用的网络营销方法有哪些

索引擎营销 电子邮件营销 即时通讯营销 病毒式营销 BBS营销 博客营销 播客营销 RSS营销 SN营销 创意广告营销 知识型营销 事件营销 口碑营销 转载于:https://www.cnblogs.com/happyday56/p/4739488.html

AI产业链分布图曝光:1040个玩家,BAT率先步入应用

来源&#xff1a;网络大数据5月9日&#xff0c;在苏州举办的全球人工智能产品应用博览会上&#xff0c;《新一代人工智能发展年度报告(2018)》重磅发布。发布方是中国经济信息社与新一代人工智能产业技术创新战略联盟。报告相当于对2018年以来全球AI领域融资、国内AI企业分布、…

2015暑假训练(UVALive 5983 - 5992)线段树离线处理+dp

A: http://acm.hust.edu.cn/vjudge/contest/view.action?cid83690#problem/A 题意&#xff1a;N*M的格子&#xff0c;从左上走到右下&#xff0c;要求在每个点的权值必须大于0&#xff0c;问起始的时候必须有多少能量 思路&#xff1a;二分答案 #include<iostream> #i…

什么是混合云?

来源&#xff1a;光联集团混合云是使那些正常的进化措施看起来更酷&#xff0c;是IT前沿术语之一。亚马逊&#xff0c;谷歌和微软等云供应商倡导企业关闭内部数据中心并将所有基础架构迁移到云端&#xff0c;这就是“超融合”数据中心战略。1转移基础设施对于刚刚起步的公司而言…

Shell—grep、sed、awk

Shell学习 Shell 是一个用 C 语言编写的程序&#xff0c;它是用户使用 Linux 的桥梁。Shell 既是一种命令语言&#xff0c;又是一种程序设计语言。 Shell 是指一种应用程序&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面访问操作系统内核的服务。 She…