题目大意:

给一个有向图

求一个最大的强连通分量,输出这个强连通分量里的所有元素

若两个联通分量内点数相同 则输出字典序小的那个

思路:

直接tarjan

对每个连通分量,求一下最小点,然后判断字典序就行了

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<set>
#include<map>
#include<vector>
#include<stack>
#include<queue>
#define ll long long
#define inf 2147383611
#define MAXN 100100
#define MOD 5050
using namespace std;
inline int read()
{
int x=,f=;
char ch;ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-;ch=getchar();}
while(isdigit(ch)) {x=x*+ch-'';ch=getchar();}
return x*f;
}
int n,m,next[MAXN*],first[MAXN],to[MAXN*],cnt;
int scc,dfn[MAXN],low[MAXN],bl[MAXN],stp,num[MAXN],minn[MAXN];
bool vis[MAXN];
int st[MAXN],top;
void add(int u,int v) {next[++cnt]=first[u],first[u]=cnt,to[cnt]=v;}
void tarjan(int x)
{
low[x]=dfn[x]=++stp,st[++top]=x,vis[x]=;
for(int i=first[x];i;i=next[i])
{
if(!dfn[to[i]])
{
tarjan(to[i]);low[x]=min(low[x],low[to[i]]);
}
else if(vis[to[i]]) low[x]=min(low[x],dfn[to[i]]);
}
if(low[x]==dfn[x])
{
scc++,minn[scc]=inf;
while(st[top+]!=x) minn[scc]=min(st[top],minn[scc]),bl[st[top]]=scc,num[scc]++,vis[st[top]]=,top--;
}
}
int main()
{
n=read(),m=read();
int t,a,b;
while(m--)
{
a=read(),b=read(),t=read();
if(t==) add(a,b);
else {add(a,b);add(b,a);}
}
for(int i=;i<=n;i++) if(!dfn[i]) tarjan(i);
int tmp=,k;
for(int i=;i<=scc;i++) if(num[i]>=tmp||(num[i]==tmp&&minn[i]<minn[tmp])) tmp=num[i],k=i;
printf("%d\n",tmp);
for(int i=;i<=n;i++) if(bl[i]==k) printf("%d ",i);
}

最新文章

  1. 在计算机 . 上没有找到服务 WAS
  2. BUG级别(优先级、严重级)定义
  3. 转:EClipse 10个最有用的快捷键
  4. sql2008备份集中的数据库备份与现有的xxx数据库不同解决方法
  5. xml 和 json 的区别
  6. 定位程序问题的方法 -- clwu
  7. 暑假集训(4)第三弹 -----递推(Hdu1799)
  8. 锋利的JQuery-Jquery中的事件和动画
  9. How Many Fibs_hdu_1316(大数).java
  10. windows phone 扫描二维码
  11. 二十七、Java图形化界面设计——容器(JFrame)
  12. cglib源码学习交流
  13. javascript笔记整理(运算符 )
  14. TeX括号。。。
  15. 7年,OpenStack从入门到放弃|送书
  16. Vue2.0 入门 安装Vue-cli
  17. Spark核心RDD、什么是RDD、RDD的属性、创建RDD、RDD的依赖以及缓存、
  18. 微生物组学数据分析工具综述 | 16S+宏基因组+宏病毒组+宏转录组--转载
  19. Android 数据存储04之Content Provider
  20. Map map=new HashMap()

热门文章

  1. Django 模版语法 一
  2. 【07】Ajax status和statusText状态对照表
  3. AspNetPager控件的简单使用
  4. Java Class 利用classpath来获取源文件地址
  5. 2016 Multi-University Training Contest 3-1011.Teacher Bo,暴力!
  6. Eclipse4.5在线安装Aptana插件及配置代码提示教程
  7. 贝尔数--Codeforces908E. New Year and Entity Enumeration
  8. 百度音乐免费API接口
  9. win10笔记本相机打开黑屏无法打开笔记本相机
  10. [转]一个完整的Installshield安装程序实例