题文:https://vjudge.net/problem/UVA-11324

题解:

  这个题目首先可以发现,只要是一个强连通分量,要么都选,要么都不选,将点权看成强连通分量的点数,所以这个题目就转化成了DAG上的最大路。

  稍微dp一下就好了。

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#include <stack>
#define MAXN 50100
using namespace std;
struct edge{
int first;
int next;
int to;
}a[MAXN*];
int dfn[MAXN],in[MAXN],low[MAXN],fa[MAXN],size[MAXN];
int dp[MAXN],b[MAXN],x[MAXN],y[MAXN];
int n,m,num1=,num2=,num3=;
stack<int> s; void cl(){
memset(low,,sizeof(low));
memset(dp,,sizeof(dp));
memset(dfn,,sizeof(dfn));
memset(fa,,sizeof(fa));
memset(size,,sizeof(size));
memset(a,,sizeof(a));num1=num2=num3=;
memset(in,,sizeof(in));
memset(b,,sizeof(b));
memset(x,,sizeof(x));
memset(y,,sizeof(y));
} void addedge(int from,int to){
a[++num1].to=to;
a[num1].next=a[from].first;
a[from].first=num1;
} void init(){
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
scanf("%d%d",&x[i],&y[i]);
addedge(x[i],y[i]);
}
} void tarjian(int now){
s.push(now);in[now]=;
dfn[now]=low[now]=++num3;
for(int i=a[now].first;i;i=a[i].next){
int to=a[i].to;
if(!dfn[to]){
tarjian(to);
low[now]=min(low[now],low[to]);
}
else if(in[to]) low[now]=min(low[now],dfn[to]);
}
if(low[now]==dfn[now]){
int u=-;
num2++;
while(u!=now){
u=s.top();s.pop();in[u]=;
fa[u]=num2;
size[num2]++;
}
}
} void make(){
memset(a,,sizeof(a));num1=;
for(int i=;i<=m;i++){
if(fa[x[i]]!=fa[y[i]]) addedge(fa[x[i]],fa[y[i]]);
}
} void pre(){
while(!s.empty()) s.pop();
for(int i=;i<=n;i++) if(!dfn[i]) tarjian(i);
make();
} int DP(int now){
if(b[now]) return dp[now];
b[now]=;
dp[now]+=size[now];
for(int i=a[now].first;i;i=a[i].next){
int to=a[i].to;
dp[now]=max(dp[now],size[now]+DP(to));
}
return dp[now];
} int main()
{
int t;cin>>t;
while(t--){
cl();
init();
pre();
for(int i=;i<=n;i++) DP(i);
int ans=;
for(int i=;i<=n;i++) ans=max(ans,dp[i]);
printf("%d\n",ans);
}
return ;
}

The Largest Clique UVA - 11324的更多相关文章

  1. The Largest Clique UVA - 11324( 强连通分量 + dp最长路)

    这题  我刚开始想的是  缩点后  求出入度和出度为0 的点  然后统计个数  用总个数 减去 然而 这样是不可以的  画个图就明白了... 如果  减去度为0的点  那么最后如果出现这样的情况是不可 ...

  2. 训练指南 UVA - 11324(双连通分量 + 缩点+ 基础DP)

    layout: post title: 训练指南 UVA - 11324(双连通分量 + 缩点+ 基础DP) author: "luowentaoaa" catalog: true ...

  3. UVA 11324 - The Largest Clique(强连通分量+缩点)

    UVA 11324 - The Largest Clique 题目链接 题意:给定一个有向图,要求找一个集合,使得集合内随意两点(u, v)要么u能到v,要么v能到u,问最大能选几个点 思路:强连通分 ...

  4. uva 11324 The Largest Clique

    vjudge 上题目链接:uva 11324 scc + dp,根据大白书上的思路:" 同一个强连通分量中的点要么都选,要么不选.把强连通分量收缩点后得到SCC图,让每个SCC结点的权等于它 ...

  5. uva 11324 The Largest Clique(图论-tarjan,动态规划)

    Problem B: The Largest Clique Given a directed graph G, consider the following transformation. First ...

  6. UVA11324 The Largest Clique[强连通分量 缩点 DP]

    UVA - 11324 The Largest Clique 题意:求一个节点数最大的节点集,使任意两个节点至少从一个可以到另一个 同一个SCC要选一定全选 求SCC 缩点建一个新图得到一个DAG,直 ...

  7. 『题解』UVa11324 The Largest Clique

    原文地址 Problem Portal Portal1:UVa Portal2:Luogu Portal3:Vjudge Description Given a directed graph \(\t ...

  8. uva 11324

    Problem B: The Largest Clique Given a directed graph G, consider the following transformation. First ...

  9. 【UVA11324】 The Largest Clique (Tarjan+topsort/记忆化搜索)

    UVA11324 The Largest Clique 题目描述 给你一张有向图 \(G\),求一个结点数最大的结点集,使得该结点集中的任意两个结点 \(u\) 和 \(v\) 满足:要么 \(u\) ...

随机推荐

  1. python读取大文件只能读取部分的问题

    最近准备重新研究一下推荐系统的东西,用到的数据集是Audioscrobbler音乐数据集.我用python处理数据集中artist_data.txt这个文件的时候,先读取每一行然后进行处理: with ...

  2. 【Offer】[31] 【栈的压入、弹出序列】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列{1,2,3 ...

  3. CentOS7.6中mysql实践

    cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) 使用:yum -y install mysql mysql-server 安装 ...

  4. 【LeetCode】56-合并区间

    题目描述 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 ...

  5. TypeScript + React + Redux 实战简单天气APP全套完整项目

    下载链接:https://www.yinxiangit.com/171.html 目录: 从面向过程的js到面向对象的js,让web前端更加高大尚.让你的前端步步日上,紧跟技术发展的前沿.让你构建更加 ...

  6. Eclipse For Mac下中文乱码解决

    在Mac os 版本的eclipse下引入java项目或是源代码,经常会碰到其中中文部分都是乱码.对于这一问题,经过小试,可以解决. 1.打开eclipse 偏好设置 2.General ——> ...

  7. 误删除系列一:linux的bin目录误删除后恢复操作

    感言:一失足成千古恨,一不小心就把/usr/bin下所有的命令都删除了,当你以为自己很熟练时,当你以为自己操作对时,可能就是失手的时候,还好这次只是一个测试环境....God 恢复过程:(以下是在vs ...

  8. java使用FileSystem上传文件到hadoop分布式文件系统配置

    Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://sparkclust ...

  9. springboot---redis缓存的使用

    1.下载redis安装包,解压到电脑 2.启动redis 3.springboot  application.properties中配置redis缓存 spring.redis.host=127.0. ...

  10. 自定义 behavior - 完美仿 QQ 浏览器首页,美团商家详情页

    使用CoordinatorLayout打造各种炫酷的效果 自定义Behavior -- 仿知乎,FloatActionButton隐藏与展示 NestedScrolling 机制深入解析 一步步带你读 ...