uva 11324 The Largest Clique (Tarjan+记忆化)
/*每个环 要么不选 要么全选 可缩点 就得到一个GAD图 然后搞搞算出最大路径*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 100010
using namespace std;
int T,n,m,num,head[maxn],low[maxn],dfn[maxn],s[maxn],top,vi[maxn];
int sum,belong[maxn],Head[maxn],Num,ans,f[maxn],topt,dp[maxn];
struct node{int v,pre;}e[maxn];
struct Node{int v,pre;}E[maxn];
void add(int from,int to)
{
e[num].v=to;
e[num].pre=head[from];
head[from]=num++;
}
void Add(int from,int to)
{
E[Num].v=to;
E[Num].pre=Head[from];
Head[from]=Num++;
}
void Tarjan(int x)
{
low[x]=dfn[x]=++topt;
s[++top]=x;f[x]=;
for(int i=head[x];i!=-;i=e[i].pre)
{
int v=e[i].v;
if(dfn[v]==)
{
Tarjan(v);low[x]=min(low[x],low[v]);
}
else if(f[v])low[x]=min(low[x],dfn[v]);
}
if(low[x]==dfn[x])
{
sum++;
while(x!=s[top])
{
f[s[top]]=;belong[s[top]]=sum;top--;vi[sum]++;
}
f[s[top]]=;belong[s[top]]=sum;top--;vi[sum]++;
}
}
int Dfs(int x)
{
if(dp[x])return dp[x];
int r=;
for(int i=Head[x];i!=-;i=E[i].pre)
{
int v=E[i].v;
r=max(r,Dfs(v));
}
return dp[x]=r+vi[x];
}
int main()
{
scanf("%d",&T);
while(T--)
{
memset(belong,,sizeof(belong));
memset(head,-,sizeof(head));
memset(Head,-,sizeof(Head));
memset(low,,sizeof(low));
memset(dfn,,sizeof(dfn));
memset(dp,,sizeof(dp));
memset(vi,,sizeof(vi));
memset(f,,sizeof(f));
memset(s,,sizeof(s));
num=Num=topt=sum=ans=;
int u,v;
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
scanf("%d%d",&u,&v);
add(u,v);
}
for(int i=;i<=n;i++)
if(dfn[i]==)
Tarjan(i);
for(int u=;u<=n;u++)
for(int i=head[u];i!=-;i=e[i].pre)
{
int U=belong[u],V=belong[e[i].v];
if(U!=V)Add(U,V);
}
for(int i=;i<=sum;i++)
ans=max(ans,Dfs(i));
printf("%d\n",ans);
}
}
uva 11324 The Largest Clique (Tarjan+记忆化)的更多相关文章
- UVA 11324.The Largest Clique tarjan缩点+拓扑dp
题目链接:https://vjudge.net/problem/UVA-11324 题意:求一个有向图中结点数最大的结点集,使得该结点集中任意两个结点u和v满足:要目u可以到达v,要么v可以到达u(相 ...
- UVA 11324 - The Largest Clique(强连通分量+缩点)
UVA 11324 - The Largest Clique 题目链接 题意:给定一个有向图,要求找一个集合,使得集合内随意两点(u, v)要么u能到v,要么v能到u,问最大能选几个点 思路:强连通分 ...
- UVA - 11324 The Largest Clique 强连通缩点+记忆化dp
题目要求一个最大的弱联通图. 首先对于原图进行强连通缩点,得到新图,这个新图呈链状,类似树结构. 对新图进行记忆化dp,求一条权值最长的链,每一个点的权值就是当前强连通分量点的个数. /* Tarja ...
- uva 11324 The Largest Clique(图论-tarjan,动态规划)
Problem B: The Largest Clique Given a directed graph G, consider the following transformation. First ...
- uva 11324 The Largest Clique
vjudge 上题目链接:uva 11324 scc + dp,根据大白书上的思路:" 同一个强连通分量中的点要么都选,要么不选.把强连通分量收缩点后得到SCC图,让每个SCC结点的权等于它 ...
- uva 11324 The Largest Clique(强连通分量缩点+DAG动态规划)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=25&page=sh ...
- UVAoj 11324 - The Largest Clique(tarjan + dp)
题意:给定一个有向图,寻找一个点数最大集合,使得这个集合中的任意两个点 u,v, 都有u->v 或者 v->u 或者u<==>v 思路:首先将强连通分量通过tarjan算法求出 ...
- UVA 11324 The Largest Clique(缩点+DAG上的dp)
求最大团.和等价性证明有类似之处,只不过这个不是求互推,而是只要a->b,或b->a即可. 同样的,容易想到先缩点,得到DAG,每个节点上保存SCC的点数,相信任意一条由根节点(入度为零) ...
- UVA 11324 The Largest Clique (强连通分量,dp)
给出一个有向图,求一个最大的结点集合,任意两个点u,v.u可到达v或v可到达u. 一个强连通分量肯定一起选的.而且只能在一条路径上. 所以先找出所有scc,然后缩点找一条最大权的路径,按拓扑序跑DAG ...
随机推荐
- window bzr launchpad 安装配置
1: https://launchpad.net/bzr/2.6/2.6b1/+download/bzr-2.6b1-1-setup.exe 使用Standalone版本 , 安装时选择plugin ...
- C#操作xml的3种方式
C#操作Xml有很多种方式,这里写出个人常使用的三种方式 XmlDocument DataSet linq to xml 首先声明本次操作使用的xml文件:books.xml:内容如下 <?x ...
- 造成session丢失的原因和解决方法
win2003 server下的IIS6默认设置下对每个运行在默认应用池中的工作者进程都会经过20多个小时后自动回收该进程, 造成保存在该进程中的session丢失. 因为Session,Appl ...
- 分布式系统间通信之RPC简单Demo(七)
看似终点,回到起点.第一次接触C#,编写的第一个真正的Demo是基于Socket的简单通信,现在JAVA开始的第一个RPC的Demo也是基于Socket.. 下面通过java原生的序列化,Socket ...
- OrCAD PSpice仿真库模型
说明:本介绍包含了\capture\library\pspice和capture\library\pspice\advanls目录下所有库,但由于作者水平有限,介绍得也比较简单,有些说明可能不一定对. ...
- 首页重定位到mian.action上
<body onload="top.location.href='<%=request.getContextPath()%>/main.action';">
- QQ空间自动发广告解决方法
最近空间好多人QQ都中了毒.每天我都有几十个好友刷空间话费.流量广告! QQ空间自动发广告的原因: 最近使用了刷赞或者其他QQ外挂软件(有些开发者或破解者会在这样的软件上留后门,请自己判断). 或者最 ...
- QQ互联 回调地址
http://wiki.connect.qq.com/%E5%9B%9E%E8%B0%83%E5%9C%B0%E5%9D%80%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98% ...
- P - The Shortest Path in Nya Graph-hdu4725(双端队列+拆点)
题意:有N个点和N层..一层有X个点(0<=X<=N).两邻两层间有一条路花费C.还有M条小路在两个点之间.问从第一个点走到第N个点最短路是多少... 可以考虑在每一层增加一个点,这个点到 ...
- React Native专题
转载注明出处:地址:http://www.lcode.org本文出自:[江清清的技术专栏]本React Native讲解专题:主要讲解了React Native开发,由基础环境搭建配置入门,基础,进阶 ...