强连通 HDU 3639
t个样例
n个点 m条边
求有手帕最多的人
A->B B->C
C 2块 可以传递
先强联通一下 这里的权是强连通分量中有几个点
然后要建一下反图 入度为0的点就有可能是最大的点
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<stack> using namespace std; #define MAXN 5010
#define MAXN1 30010 int head[MAXN],dfn[MAXN],low[MAXN],pa[MAXN],cou[MAXN],in[MAXN],ans[MAXN],s1[MAXN];
bool vis[MAXN];
int k,num,cnt; struct edg
{
int next,to,fr;
}x[MAXN1]; void add(int u,int v)
{
x[cnt].next=head[u];
x[cnt].fr=u;
x[cnt].to=v;
head[u]=cnt++;
}
stack<int>s; void dfs(int u)
{
dfn[u]=low[u]=k++;
vis[u]=;
s.push(u);
int i;
for(i=head[u];i!=-;i=x[i].next)
{
int t=x[i].to;
if(!dfn[t])
{
dfs(t);
low[u]=min(low[u],low[t]);
}
else if(vis[t])
low[u]=min(low[u],dfn[t]);
}
if(dfn[u]==low[u])
{
num++;
while(!s.empty())
{
int now=s.top();
s.pop();
pa[now]=num;
vis[now]=;
cou[num]++;
if(now==u)break;
}
}
}
int sum;
void dfs1(int u)
{
vis[u]=;
int i;
sum=sum+cou[u];
for(i=head[u];i!=-;i=x[i].next)
{
if(!vis[x[i].to])
dfs1(x[i].to);
}
}
int main()
{
int t,ca;
scanf("%d",&t);
ca=; while(t--)
{
int n,m,i;
scanf("%d%d",&n,&m);
memset(head,-,sizeof(head));
cnt=;
for(i=;i<=m;i++)
{
int a,b;
scanf("%d%d",&a,&b);
add(a,b);
}
num=;
k=;
memset(dfn,,sizeof(dfn));
memset(low,,sizeof(low));
memset(vis,,sizeof(vis));
memset(pa ,,sizeof(pa));
memset(cou,,sizeof(cou));
memset(in, ,sizeof(in));
memset(ans,,sizeof(ans)); for(i=;i<n;i++)
if(!dfn[i])
dfs(i);
int en=cnt;
memset(head,-,sizeof(head));
cnt=;
for(i=;i<en;i++)
{
int u,v;
u=pa[x[i].fr];
v=pa[x[i].to];
if(u!=v)
{
add(v,u);
in[u]++;
}
}
int m1=-;
for(i=;i<=num;i++)
{
if(in[i]==)
{
sum=;
memset(vis,,sizeof(vis));
dfs1(i);
ans[i]=sum;
if(sum>m1)
m1=sum;
}
}
printf("Case %d: %d\n",ca++,m1-);
int c1=; for(i=;i<n;i++)
{
if(ans[pa[i]]==m1)
{
s1[c1++]=i;
}
}
for(i=;i<c1-;i++)
printf("%d ",s1[i]);
printf("%d\n",s1[i]);
} return ;
}
强连通 HDU 3639的更多相关文章
- HDU 3639 Hawk-and-Chicken(强连通分量+缩点)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u013480600/article/details/32140501 HDU 3639 Hawk-a ...
- HDU 3639 Hawk-and-Chicken(良好的沟通)
HDU 3639 Hawk-and-Chicken 题目链接 题意:就是在一个有向图上,满足传递关系,比方a->b, b->c,那么c能够得到2的支持,问得到支持最大的是谁,而且输出这些人 ...
- HDU 3639 Hawk-and-Chicken(强连通缩点+反向建图)
http://acm.hdu.edu.cn/showproblem.php?pid=3639 题意: 有一群孩子正在玩老鹰抓小鸡,由于想当老鹰的人不少,孩子们通过投票的方式产生,但是投票有这么一条规则 ...
- HDU 3639 Hawk-and-Chicken (强连通缩点+DFS)
<题目链接> 题目大意: 有一群孩子正在玩老鹰抓小鸡,由于想当老鹰的人不少,孩子们通过投票的方式产生,但是投票有这么一条规则:投票具有传递性,A支持B,B支持C,那么C获得2票(A.B共两 ...
- HDU 3639 Hawk-and-Chicken
Hawk-and-Chicken Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 强连通 HDU 1827
n个点m条边 n个权lcy 要叫这个人的花费 m条边 缩点后 新的图中 入度为0的点要通知 通知强连通分量中权值最小的 #include<stdio.h> #include<alg ...
- 强连通 HDU 1269
n点m边 求是否能从任意a->b b->a 强连通分量等于1 #include<stdio.h> #include<algorithm> #include<s ...
- HDU 3639 Bone Collector II(01背包第K优解)
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 强连通 HDU 3861
t个样例 n个点m条边 分成一些区 2个点互相能到达必须分在一个区 一个区中任何2个点可以u->v 或者v->u 任何点都要有自己的区 求最小的区的数目 强联通缩点 成新图 二分匹配 求最 ...
随机推荐
- POJ2955Brackets[区间DP]
Brackets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6585 Accepted: 3534 Descript ...
- UNITY在VS中调试
下载地址:https://visualstudiogallery.msdn.microsoft.com/site/search?f%5B0%5D.Type=RootCategory&f%5B0 ...
- HTML插入地图的方法
方法/步骤 1.打开"百度地图生成器"的网址:http://api.map.baidu.com/lbsapi/creatmap/index.html 如下图: 2.在"1 ...
- jmeter 中的 HTTP URL Re-writing Modifier
URL rewriting modifier,因为tomcat的session实现不是通过cookie的,而是通过session id的,就是说,用户登录有了session之后,tomcat就会维护一 ...
- 微软前 CEO 史蒂姆·鲍尔默:除了我们没人拼得过苹果硬件
微软通过 Surface Book 正式宣布进军笔记本电脑行业的同时,宣传语表示 Surface Book“比苹果的 MacBook Pro 还要快两倍”. 业界对 Surface Book 的好评连 ...
- idea常用快捷键
十大Intellij IDEA快捷键 2015-01-16 21:31 122307人阅读 评论(38) 收藏 举报 本文章已收录于: .embody { padding: 10px 10px 10p ...
- Sublime3安装过程及常用插件安装及常用快捷键
1 先去http://www.sublimetext.com/官网下载软件,然后网上找一个验证码,注册完成. 2 安装Package Control ,Package Control 插件是一个方 ...
- MySQL sql语言的笔记
3 MySQL数据库 3.1 mysql数据存储结构 先数据库,再表,再有数据 4 数据库管理 4.1 查询所有数据库 mysql> show databases; +------------- ...
- poj[2392]space elevator
Description The cows are going to space! They plan to achieve orbit by building a sort of space elev ...
- 用nodejs搭建一个简单的服务器
使用nodejs搭建一个简单的服务器 nodejs优点:性能高(读写文件) 数据操作能力强 官网:www.nodejs.org 验证是否安装成功:cmd命令行中输入node -v 如果显示版本号表示安 ...