题目大意:求一个有向图的最大强连通分量中点的个数,并输出这些点(字典序最小)。

解题思路:裸的强连通分量。

数据小,求完强连通分量后排序+vector大小比较即可(vector有小于运算符)。

C++ Code:

#include<cstdio>
#include<cctype>
#include<cstring>
#include<cstdarg>
#include<stack>
#include<vector>
#include<algorithm>
using std::sort;
int n,m,cnt,head[5050],low[5050],dfn[5050],ltfl,idx=0;
std::stack<int>s;
bool vis[5050];
struct edge{
int to,nxt;
}e[50505];
std::vector<int>v[5050];
inline int min(int a,int b){return a<b?a:b;}
inline int max(int a,int b){return a>b?a:b;}
inline int readint(){
char c=getchar();
for(;!isdigit(c);c=getchar());
int d=0;
for(;isdigit(c);c=getchar())
d=(d<<3)+(d<<1)+(c^'0');
return d;
}
inline void read(int cnt,...){
va_list arg_ptr;
va_start(arg_ptr,cnt);
for(int i=0;i<cnt;++i){
int* p=va_arg(arg_ptr,int*);
*p=readint();
}
}
void tarjan(int now){
vis[now]=true;
s.push(now);
dfn[now]=low[now]=++idx;
for(int i=head[now];i;i=e[i].nxt)
if(!dfn[e[i].to]){
tarjan(e[i].to);
low[now]=min(low[now],low[e[i].to]);
}else
if(vis[e[i].to])low[now]=min(low[now],dfn[e[i].to]);
if(low[now]==dfn[now]){
++ltfl;
int k;
do{
k=s.top();
s.pop();
vis[k]=false;
v[ltfl].push_back(k);
}while(k!=now);
}
}
int main(){
cnt=ltfl=0;
memset(head,0,sizeof head);
read(2,&n,&m);
while(m--){
int u,v,t;
read(3,&u,&v,&t);
e[++cnt]=(edge){v,head[u]};
head[u]=cnt;
if(t-1){
e[++cnt]=(edge){u,head[v]};
head[v]=cnt;
}
}
memset(low,0,sizeof low);
memset(dfn,0,sizeof dfn);
memset(vis,0,sizeof vis);
for(int i=1;i<=n;++i)
if(!dfn[i])tarjan(i);
int p=0;
std::vector<int>ans;
bool hasans=false;
for(int i=1;i<=ltfl;++i)
p=max(p,v[i].size());
for(int i=1;i<=ltfl;++i)
if(v[i].size()==p){
sort(v[i].begin(),v[i].end());
if(!hasans){
hasans=true;
ans=v[i];
}else
if(v[i]<ans)ans=v[i];
}
printf("%d\n",p);
--p;
for(int i=0;i<p;++i)printf("%d ",ans[i]);
printf("%d\n",ans[p]);
return 0;
}

[洛谷P1726][codevs1332]上白泽慧音的更多相关文章

  1. 【洛谷P1726】上白泽慧音

    上白泽慧音 题目链接 强联通分量模板题,Tarjan求强联通分量,记录大小即可 #include<iostream> #include<cstring> #include< ...

  2. Tarjan缩点【p1726】上白泽慧音

    Description 在幻想乡,上白泽慧音是以知识渊博闻名的老师.春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄.因此慧音决定换一个能够聚集最多人数的村庄作为新的 ...

  3. 【小白入门向】tarjan算法+codevs1332上白泽慧音 题解报告

    一.[前言]关于tarjan tarjan算法是由Robert Tarjan提出的求解有向图强连通分量的算法. 那么问题来了找蓝翔!(划掉)什么是强连通分量? 我们定义:如果两个顶点互相连通(即存在A ...

  4. 洛谷P1726 上白泽慧音 [Tarjan]

    题目传送门 上白泽慧音 题目描述 在幻想乡,上白泽慧音是以知识渊博闻名的老师.春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄.因此慧音决定换一个能够聚集最多人数的村 ...

  5. 洛谷P1726 上白泽慧音(Tarjan强连通分量)

    P1726 上白泽慧音 题目描述 在幻想乡,上白泽慧音是以知识渊博闻名的老师.春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄.因此慧音决定换一个能够聚集最多人数的村 ...

  6. 洛谷P1726 上白泽慧音

    题目描述 在幻想乡,上白泽慧音是以知识渊博闻名的老师.春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄.因此慧音决定换一个能够聚集最多人数的村庄作为新的教学地点.人间 ...

  7. 洛谷 P1726 上白泽慧音

    题目描述 在幻想乡,上白泽慧音是以知识渊博闻名的老师.春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄.因此慧音决定换一个能够聚集最多人数的村庄作为新的教学地点.人间 ...

  8. CODEVS——T1332 上白泽慧音 || 洛谷——P1726 上白泽慧音

    http://codevs.cn/problem/1332/|| https://www.luogu.org/problem/show?pid=1726#sub  时间限制: 1 s  空间限制: 1 ...

  9. 洛谷1726 上白泽慧音 tarjan模板

    题目描述 在幻想乡,上白泽慧音是以知识渊博闻名的老师.春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄.因此慧音决定换一个能够聚集最多人数的村庄作为新的教学地点.人间 ...

随机推荐

  1. POJ 3693 后缀数组+RMQ

    思路: 论文题 后缀数组&RMQ 有一些题解写得很繁 //By SiriusRen #include <cmath> #include <cstdio> #includ ...

  2. servlet中怎么注入service

    在工作中使用到spring的mvc框架,分为controller/service/dao三个层次.偶尔会用到servlet替换掉controller,这就遇到如何在servlet中使用注入到sprin ...

  3. JQuery中的时间和动画

    我们知道JavaScript和HTML之间的交互是通过用户操作和浏览器成生成事件来完成的,比如当浏览钱加载完一个HTML文档或用户点击一个按钮都会生成一个事件,虽然利用传统的JavaScript事件可 ...

  4. Eclipse中將Java项目转变为Java Web项目

    1.在项目上点击右键=>properties,在Project Facets配置项中,勾选Dynamic Web Module.Java.JavaScript选项. 2.用记事本打开项目目录下的 ...

  5. [Java] Protect, Private and Public的区别

    Java中的private.protected.public和default的区别 (2014-03-21 22:29:14) 转载▼ 标签: java java修饰符 it   (1)对于publi ...

  6. oracle数据的启动

    打开实例 , 数据库到nomount状态: startup nomount;  参数文件 内存,进程 指定控制文件数据库打开到mount状态: alter datatbase mount;  控制文件 ...

  7. Mybatis中<resultMap>用法(主要用于一对多去重)

    一.创建部门表和员工表: 创建部门信息表`t_department`,其中包括`id`, `name` CREATE TABLE t_department (         id INT AUTO_ ...

  8. [codevs3657]括号序列

    题目大意:有一列只有'(',')','[',']'构成的括号序列,求在序列中至少加上多少括号,能使该序列合法. 解题思路:区间dp. 我们以$f[i][j]$表示把区间$[i,j]$添成合法括号所需的 ...

  9. AES对称加密util

    package cn.com.qmhd.oto.common; import java.security.Key; import java.security.NoSuchAlgorithmExcept ...

  10. 关于python 中的偏函数转载

    Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. 在介绍函数参数的时候,我们讲到,通过 ...