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的更多相关文章

  1. HDU 3639 Hawk-and-Chicken(强连通分量+缩点)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u013480600/article/details/32140501 HDU 3639 Hawk-a ...

  2. HDU 3639 Hawk-and-Chicken(良好的沟通)

    HDU 3639 Hawk-and-Chicken 题目链接 题意:就是在一个有向图上,满足传递关系,比方a->b, b->c,那么c能够得到2的支持,问得到支持最大的是谁,而且输出这些人 ...

  3. HDU 3639 Hawk-and-Chicken(强连通缩点+反向建图)

    http://acm.hdu.edu.cn/showproblem.php?pid=3639 题意: 有一群孩子正在玩老鹰抓小鸡,由于想当老鹰的人不少,孩子们通过投票的方式产生,但是投票有这么一条规则 ...

  4. HDU 3639 Hawk-and-Chicken (强连通缩点+DFS)

    <题目链接> 题目大意: 有一群孩子正在玩老鹰抓小鸡,由于想当老鹰的人不少,孩子们通过投票的方式产生,但是投票有这么一条规则:投票具有传递性,A支持B,B支持C,那么C获得2票(A.B共两 ...

  5. HDU 3639 Hawk-and-Chicken

    Hawk-and-Chicken Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  6. 强连通 HDU 1827

    n个点m条边 n个权lcy 要叫这个人的花费 m条边 缩点后 新的图中 入度为0的点要通知  通知强连通分量中权值最小的 #include<stdio.h> #include<alg ...

  7. 强连通 HDU 1269

    n点m边 求是否能从任意a->b b->a 强连通分量等于1 #include<stdio.h> #include<algorithm> #include<s ...

  8. HDU 3639 Bone Collector II(01背包第K优解)

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  9. 强连通 HDU 3861

    t个样例 n个点m条边 分成一些区 2个点互相能到达必须分在一个区 一个区中任何2个点可以u->v 或者v->u 任何点都要有自己的区 求最小的区的数目 强联通缩点 成新图 二分匹配 求最 ...

随机推荐

  1. html5的小知识点小集合

      html5的小知识点小集合 html5知识   1.  Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于< ...

  2. u3d_shader_surface_shader_5

    CubeMap 的实现 参考: http://blog.csdn.net/candycat1992/article/details/21827365     制作cubeMap三维纹理,surface ...

  3. win7旗舰版 中文64位 产品密钥(序列号)

    无需破解即可激活Windows 7旗舰版的"神Key". 第一枚"神Key":TFP9Y-VCY3P-VVH3T-8XXCC-MF4YK: 第二枚"神 ...

  4. .net(c#)提取多层嵌套的JSON

    Newtonsoft.Json.Net20.dll 下载请访问http://files.cnblogs.com/hualei/Newtonsoft.Json.Net20.rar 在.net 2.0中提 ...

  5. Integer.parseInt(String s) 和 Integer.valueOf(String s) 的区别

    通过查看java.lang.Integer的源码可以发现, 它们最终调用的都是 /** * Parses the string argument as a signed integer in the ...

  6. ESXi 6.0 配置

    ESXi 6.0 添加静态路由 首先打开ESXi的SSH服务, 在Configuration -> Security Profile -> Services , start SSH 用管理 ...

  7. web standards

    http://www.w3.org/standards/ http://www.webstandards.org/learn/faq/#p213 http://www.w3.org/standards ...

  8. Protocol https not supported or disabled in libcurl

    最后用PHP Curl 模拟访问HTTPS ,总是得到 Protocol https not supported or disabled in libcurl 错误,奇怪了,找了很多资料,有人说没有开 ...

  9. linux传输大文件

    http://dreamway.blog.51cto.com/1281816/1151886 linux传输大文件

  10. git 保存本地更改而不需要推到远程

    git commit 修改到本地分支 repo sync . 更新分支 git checkout local 切换到本地分支 git rebase 远程 更新远程分支到本地并且将本地分支节点推到最顶